├── .gitignore ├── t ├── 000_compile.t └── 001_basic │ ├── 02_pod_info.t │ └── 01_search_perlfunc.t ├── xt ├── 01_synopsis.t ├── 02_pod.t ├── 03_perlcritic.t ├── 08_vars.t ├── 07_kwalitee.t ├── 05_portability_filenames.t ├── 06_pod_coverage.t ├── 04_podspell.t └── 09_podspell_unicodetut.t ├── .perlcriticrc ├── Build.PL ├── dist.ini ├── .travis.yml ├── cpanfile ├── META.json ├── lib └── POD2 │ ├── RU │ ├── perlcheat.pod │ ├── perlpragma.pod │ ├── perlhacktut.pod │ ├── a2p.pod │ ├── perlbook.pod │ ├── perldoc.pod │ ├── perlunitut.pod │ ├── perlstyle.pod │ ├── perlnewmod.pod │ ├── perlpodstyle.pod │ ├── perl.pod │ ├── perlreref.pod │ └── perlrequick.pod │ └── RU.pm ├── README.md ├── Changes └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | /POD2-RU-* 2 | /.build 3 | /_build* 4 | /Build 5 | MYMETA.* 6 | !META.json 7 | /.prove 8 | *.log 9 | .project -------------------------------------------------------------------------------- /t/000_compile.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use utf8; 4 | 5 | use Test::More tests => 1; 6 | BEGIN { use_ok 'POD2::RU' } 7 | -------------------------------------------------------------------------------- /xt/01_synopsis.t: -------------------------------------------------------------------------------- 1 | use Test::More; 2 | eval "use Test::Synopsis"; 3 | plan skip_all => "Test::Synopsis required" if $@; 4 | all_synopsis_ok(); 5 | -------------------------------------------------------------------------------- /xt/02_pod.t: -------------------------------------------------------------------------------- 1 | use Test::More; 2 | eval "use Test::Pod 1.00"; 3 | plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; 4 | all_pod_files_ok(); 5 | -------------------------------------------------------------------------------- /.perlcriticrc: -------------------------------------------------------------------------------- 1 | [-Documentation::RequirePodSections] 2 | [-Documentation::PodSpelling] 3 | [-InputOutput::RequireCheckedSyscalls] 4 | [-Documentation::RequirePodLinksIncludeText] 5 | -------------------------------------------------------------------------------- /xt/03_perlcritic.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use Test::More; 3 | eval q{ use Test::Perl::Critic }; 4 | plan skip_all => "Test::Perl::Critic is not installed." if $@; 5 | all_critic_ok("lib"); 6 | -------------------------------------------------------------------------------- /xt/08_vars.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More; 4 | 5 | eval "use Test::Vars; 1" or do { 6 | plan skip_all => 'Test::Vars is not installed.'; 7 | }; 8 | 9 | all_vars_ok(); 10 | -------------------------------------------------------------------------------- /Build.PL: -------------------------------------------------------------------------------- 1 | # This Build.PL for POD2-RU was generated by Dist::Zilla::Plugin::ModuleBuildTiny 0.015. 2 | use strict; 3 | use warnings; 4 | 5 | use 5.008005; 6 | use Module::Build::Tiny 0.034; 7 | Build_PL(); 8 | -------------------------------------------------------------------------------- /xt/07_kwalitee.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More; 4 | 5 | eval { require Test::Kwalitee; Test::Kwalitee->import(); 1 } or do { 6 | plan skip_all => 'Test::Kwalitee not installed; skipping'; 7 | }; 8 | -------------------------------------------------------------------------------- /xt/05_portability_filenames.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More; 4 | 5 | eval "use Test::Portability::Files; 1" or do { 6 | plan skip_all => 'Test::Portability::Files is not installed.'; 7 | }; 8 | 9 | run_tests(); 10 | -------------------------------------------------------------------------------- /xt/06_pod_coverage.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More; 4 | 5 | eval "use Test::Pod::Coverage 1.00; 1" or do { 6 | plan skip_all => 'Test::Pod::Coverage 1.00 is not installed.'; 7 | }; 8 | 9 | all_pod_coverage_ok(); 10 | -------------------------------------------------------------------------------- /dist.ini: -------------------------------------------------------------------------------- 1 | name = POD2-RU 2 | [@Milla] 3 | [GitHubREADME::Badge] 4 | badges = travis 5 | badges = coveralls 6 | badges = cpants 7 | badges = issues 8 | badges = license 9 | badges = version 10 | [MetaResources] 11 | x_IRC = irc://irc.perl.org/#ru.pm 12 | -------------------------------------------------------------------------------- /t/001_basic/02_pod_info.t: -------------------------------------------------------------------------------- 1 | ######################### 2 | # change 'tests => 1' to 'tests => last_test_to_print'; 3 | use strict; 4 | use warnings; 5 | use utf8; 6 | 7 | use Test::More tests => 1; 8 | #use Test::More::UTF8; 9 | #use Test::Deep; 10 | use POD2::RU; 11 | ######################### 12 | 13 | # Insert your test code below, the Test::More module is use()ed here so read 14 | # its man page ( perldoc Test::More ) for help writing this test script. 15 | my $pod2 = POD2::RU->new(); 16 | #use Data::Dumper; 17 | like($pod2->pod_info(), qr/\d+[.]\d+[.]\d+/, $pod2->pod_info()); 18 | 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: perl 2 | perl: 3 | - "5.24" 4 | - "5.22" 5 | - "5.20" 6 | - "5.18" 7 | - "5.16" 8 | - "5.14" 9 | - "5.12" 10 | - "5.10" 11 | 12 | install: 13 | - export RELEASE_TESTING=1 AUTOMATED_TESTING=1 AUTHOR_TESTING=1 HARNESS_OPTIONS=c HARNESS_TIMER=1 14 | - cpanm --quiet --notest Devel::Cover::Report::Coveralls 15 | - cpanm --quiet --notest --installdeps . 16 | 17 | script: 18 | - PERL5OPT=-MDevel::Cover=-coverage,statement,branch,condition,path,subroutine prove -lrsv t 19 | - cover -ignore_re '[.]t$|prove' 20 | 21 | after_success: 22 | - cover -report coveralls 23 | -------------------------------------------------------------------------------- /t/001_basic/01_search_perlfunc.t: -------------------------------------------------------------------------------- 1 | # Before `make install' is performed this script should be runnable with 2 | # `make test'. After `make install' it should work as `perl POD2-ES.t' 3 | 4 | ######################### 5 | 6 | # change 'tests => 1' to 'tests => last_test_to_print'; 7 | use strict; 8 | use warnings; 9 | use utf8; 10 | use open qw(:std :utf8); 11 | use Test::More tests => 1; 12 | use POD2::RU; 13 | ######################### 14 | 15 | # Insert your test code below, the Test::More module is use()ed here so read 16 | # its man page ( perldoc Test::More ) for help writing this test script. 17 | my $pod2 = POD2::RU->new(); 18 | 19 | like($pod2->search_perlfunc_re(), qr/^Список функций Perl/, 'Текстовый заголовок perlfunc'); 20 | -------------------------------------------------------------------------------- /cpanfile: -------------------------------------------------------------------------------- 1 | requires 'perl', '5.008005'; 2 | 3 | # requires 'Some::Module', 'VERSION'; 4 | requires 'Scalar::Util' => '1.41'; 5 | requires 'POD2::Base' => '0.043'; 6 | requires 'List::Util' => '1.41'; 7 | 8 | # Зависимости фазы тестирования 9 | on test => sub { 10 | requires 'Test::More' => '1.001006'; 11 | requires 'List::Util' => '1.41'; 12 | requires 'Test::Builder::IO::Scalar' => '2.111'; 13 | requires 'Test::Builder' => '1.001006'; 14 | requires 'Test::Builder::Module' => '1.001006'; 15 | requires 'Scalar::Util' => '1.41'; 16 | }; 17 | 18 | # Зависимости фазы сборки, спасибо Владимиру Леттиеву из Pragmaticperl 19 | # http://pragmaticperl.com/issues/10/pragmaticperl-10-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-cpanfile.html 20 | on build => sub { 21 | requires 'Module::Build::Tiny', '0.039'; 22 | requires 'Test::Pod', '1.48'; 23 | }; 24 | 25 | # Зависимости авторских тестов 26 | on 'develop' => sub { 27 | requires 'Test::Synopsis' => '0.11'; 28 | requires 'Test::More' => '1.001006'; 29 | requires 'Test::Pod' => '1.48'; 30 | requires 'List::Util' => '1.41'; 31 | requires 'Test::Builder::IO::Scalar' => '2.111'; 32 | requires 'Scalar::Util' => '1.41'; 33 | requires 'Test::Builder' => '1.001006'; 34 | requires 'ExtUtils::Manifest' => '1.70'; 35 | requires 'Test::Builder::Module' => '1.001006'; 36 | requires 'Test::Vars'; 37 | requires 'Test::Portability::Files'; 38 | requires 'Test::Pod::Coverage'; 39 | requires 'Test::Kwalitee'; 40 | }; 41 | -------------------------------------------------------------------------------- /META.json: -------------------------------------------------------------------------------- 1 | { 2 | "abstract" : "Perl \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438\r", 3 | "author" : [ 4 | "Nikolay Mishin < mi@ya.ru >\r" 5 | ], 6 | "dynamic_config" : 0, 7 | "generated_by" : "Dist::Milla version v1.0.18, Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150005", 8 | "license" : [ 9 | "perl_5" 10 | ], 11 | "meta-spec" : { 12 | "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", 13 | "version" : 2 14 | }, 15 | "name" : "POD2-RU", 16 | "no_index" : { 17 | "directory" : [ 18 | "eg", 19 | "examples", 20 | "inc", 21 | "share", 22 | "t", 23 | "xt" 24 | ] 25 | }, 26 | "prereqs" : { 27 | "build" : { 28 | "requires" : { 29 | "Module::Build::Tiny" : "0.039", 30 | "Test::Pod" : "1.48" 31 | } 32 | }, 33 | "configure" : { 34 | "requires" : { 35 | "Module::Build::Tiny" : "0.034" 36 | } 37 | }, 38 | "develop" : { 39 | "requires" : { 40 | "Dist::Milla" : "v1.0.18", 41 | "ExtUtils::Manifest" : "1.70", 42 | "List::Util" : "1.41", 43 | "Scalar::Util" : "1.41", 44 | "Test::Builder" : "1.001006", 45 | "Test::Builder::IO::Scalar" : "2.111", 46 | "Test::Builder::Module" : "1.001006", 47 | "Test::Kwalitee" : "0", 48 | "Test::More" : "1.001006", 49 | "Test::Pod" : "1.48", 50 | "Test::Pod::Coverage" : "0", 51 | "Test::Portability::Files" : "0", 52 | "Test::Synopsis" : "0.11", 53 | "Test::Vars" : "0" 54 | } 55 | }, 56 | "runtime" : { 57 | "requires" : { 58 | "List::Util" : "1.41", 59 | "POD2::Base" : "0.043", 60 | "Scalar::Util" : "1.41", 61 | "perl" : "5.008005" 62 | } 63 | }, 64 | "test" : { 65 | "requires" : { 66 | "List::Util" : "1.41", 67 | "Scalar::Util" : "1.41", 68 | "Test::Builder" : "1.001006", 69 | "Test::Builder::IO::Scalar" : "2.111", 70 | "Test::Builder::Module" : "1.001006", 71 | "Test::More" : "1.001006" 72 | } 73 | } 74 | }, 75 | "release_status" : "stable", 76 | "resources" : { 77 | "bugtracker" : { 78 | "web" : "https://github.com/mishin/POD-to-RU/issues" 79 | }, 80 | "homepage" : "https://github.com/mishin/POD-to-RU", 81 | "repository" : { 82 | "type" : "git", 83 | "url" : "https://github.com/mishin/POD-to-RU.git", 84 | "web" : "https://github.com/mishin/POD-to-RU" 85 | }, 86 | "x_IRC" : "irc://irc.perl.org/#ru.pm" 87 | }, 88 | "version" : "1.84.0", 89 | "x_contributors" : [ 90 | "Andrey Asyakin ", 91 | "Ilgizar Zakirov ", 92 | "ira ", 93 | "Mishin737 ", 94 | "Nikolay Mishin ", 95 | "Nikolay Mishin ", 96 | "Zoffix Znet " 97 | ], 98 | "x_serialization_backend" : "Cpanel::JSON::XS version 3.0213" 99 | } 100 | 101 | -------------------------------------------------------------------------------- /lib/POD2/RU/perlcheat.pod: -------------------------------------------------------------------------------- 1 | 2 | =encoding utf8 3 | 4 | =head1 NAME/НАИМЕНОВАНИЕ 5 | 6 | perlcheat - Perl 5 Шпаргалка 7 | 8 | =head1 ОПИСАНИЕ 9 | 10 | Этот «шпаргалка» является удобным справочником, предназначенный для начинающих программистов на этом языке. Здесь упомянуты не все функции, но уже 195 может быть достаточно. 11 | 12 | =head2 Таблица 13 | 14 | КОНТЕКСТЫ СИГИЛЫ ref ARRAYS HASHES 15 | void $scalar SCALAR @array %hash 16 | scalar @array ARRAY @array[0, 2] @hash{'a', 'b'} 17 | list %hash HASH $array[0] $hash{'a'} 18 | &sub CODE 19 | *glob GLOB SCALAR VALUES 20 | FORMAT number, string, ref, glob, undef 21 | Ссылки 22 | \ ссылка $$foo[1] тоже, что и $foo->[1] 23 | $@%&* dereference $$foo{bar} тоже, что и $foo->{bar} 24 | [] anon. arrayref ${$$foo[1]}[2] aka $foo->[1]->[2] 25 | {} anon. hashref ${$$foo[1]}[2] aka $foo->[1][2] 26 | \() ссылка на список 27 | СИНТАКСИС 28 | ПРИОРИТЕТ ОПЕРАТОРОВ foreach (LIST) { } for (a;b;c) { } 29 | -> while (e) { } until (e) { } 30 | ++ -- if (e) { } elsif (e) { } else { } 31 | ** unless (e) { } elsif (e) { } else { } 32 | ! ~ \ u+ u- given (e) { when (e) {} default {} } 33 | =~ !~ 34 | * / % x NUMBERS vs STRINGS FALSE vs TRUE 35 | + - . = = undef, "", 0, "0" 36 | << >> + . что-нибудь еще 37 | имени микрооперации (uops) == != eq ne 38 | < > <= >= lt gt le ge < > <= >= lt gt le ge 39 | == != <=> eq ne cmp ~~ <=> cmp 40 | & 41 | | ^ МОДИФИКАТОРЫ REGEX МЕТАСИМВОЛЫ REGEX 42 | && /i не чувствительно к регистру ^ начало строки 43 | || // /m основная линия ^$ $ str end (bfr \n) 44 | .. ... /s . включает \n + один или более 45 | ?: /x игнорировать пробелы * ноль или более 46 | = += last goto /p сохранить ? ноль или один 47 | , => /a ASCII /aa безопасно {3,7} повторить в диапазоне 48 | list ops /l локаль /d dual | альтернатива 49 | not /u Юникод [] класс символов 50 | and /e выполнить /ee rpts \b граница слова 51 | or xor /g глобально \z конец строки 52 | /o компиляции единожды () захват 53 | ОТЛАДКА (?:p) не захватывать 54 | -MO=Deparse КЛАСССИМВОЛОВ REGEX (?#t) комментарий 55 | -MO=Terse . [^\n] (?=p) ZW позиция впереди 56 | -D## \s пробел (?!p) ZW отр впереди 57 | -d:Trace \w символы слова (?<=p) ZW поз позади \K 58 | \d цифры (?p) не возвращаться назад 60 | perl -V:ivsize \h горизонт пробелы (?|p|p)сброс ветки 61 | \R перенос строки (?p)именованный захват 62 | \S \W \D \H отрицать \g{n} ссылка на имени крышкой (cap) 63 | \K держать левую часть 64 | СПИСКИ ВОЗВРАТОВ ФУНКЦИЙ 65 | stat localtime caller СПЕЦИАЛЬНЫЕ ПЕРЕМЕННЫЕ 66 | 0 dev 0 second 0 package $_ переменная по умолчанию 67 | 1 ino 1 minute 1 filename $0 имя файла программы 68 | 2 mode 2 hour 2 line $/ входной разделитель 69 | 3 nlink 3 day 3 subroutine $\ выходной разделитель 70 | 4 uid 4 month-1 4 hasargs $| autoflush (сбрасывание буфера) 71 | 5 gid 5 year-1900 5 wantarray $! ошибки системы/или вызова lib 72 | 6 rdev 6 weekday 6 evaltext $@ eval error 73 | 7 size 7 yearday 7 is_require $$ ID процесса 74 | 8 atime 8 is_dst 8 hints $. номер строки 75 | 9 mtime 9 bitmask @ARGV аргументы командной строки 76 | 10 ctime 10 hinthash @INC включенные пути 77 | 11 blksz 3..10 only @_ аргументы подпрограммы 78 | 12 blcks with EXPR %ENV переменные среды 79 | 80 | =head1 БЛАГОДАРНОСТЬ 81 | 82 | Первая версия этого документа появилась на Perl Monks, где несколько человек делали полезные предложения. Спасибо, Perl Monks. 83 | 84 | Особая благодарность Дамиану Конвею, который не только предложил важные изменения, но и нашел время, чтобы подсчитать количество перечисленных особенностей и сделать версию Perl 6, чтобы показать, что Perl остаётся Перлом. 85 | 86 | =head1 АВТОР 87 | 88 | Juerd Waalboer <#####@juerd.nl>, с помощью многих Perl Monks. 89 | 90 | =head1 СМОТРИТЕ ТАКЖЕ 91 | 92 | =over 4 93 | 94 | =item * 95 | 96 | L - Оригинальное сообщение на PM 97 | 98 | =item * 99 | 100 | L - Damian Conway Perl 6 версия 101 | 102 | =item * 103 | 104 | L - дом Perl Шпаргалки (Cheat Sheet) 105 | 106 | =back 107 | 108 | =head1 ПЕРЕВОДЧИКИ 109 | 110 | =over 111 | 112 | =item * Николай Мишин C<< >> 113 | 114 | =back 115 | -------------------------------------------------------------------------------- /lib/POD2/RU/perlpragma.pod: -------------------------------------------------------------------------------- 1 | =encoding utf8 2 | 3 | =head1 NAME/НАИМЕНОВАНИЕ 4 | 5 | perlpragma - Как писать пользовательские прагмы 6 | 7 | =head1 ОПИСАНИЕ 8 | 9 | Прагма - это модуль, который влияет на некоторые моменты во время компиляции и во время выполнения Perl-кода. Пример прагмы: Cили C. С выходом Perl 5.10 вы не ограничены в разработке прагм, теперь можете создавать пользовательские прагмы, которые будут менять поведение пользовательских функций в лексическом контексте. 10 | 11 | =head1 Основной пример 12 | 13 | Например, вам нужно создать класс, который реализует перегрузку математических операторов, и вы хотели бы использовать свою прагму с функционалом похожим на C. Пример кода: 14 | 15 | use MyMaths; 16 | 17 | my $l = MyMaths->new(1.2); 18 | my $r = MyMaths->new(3.4); 19 | 20 | print "A: ", $l + $r, "\n"; 21 | 22 | use myint; 23 | print "B: ", $l + $r, "\n"; 24 | 25 | { 26 | no myint; 27 | print "C: ", $l + $r, "\n"; 28 | } 29 | 30 | print "D: ", $l + $r, "\n"; 31 | 32 | no myint; 33 | print "E: ", $l + $r, "\n"; 34 | 35 | Результат выполнения кода: 36 | 37 | A: 4.6 38 | B: 4 39 | C: 4.6 40 | D: 4 41 | E: 4.6 42 | 43 | I<В примере>, в котором используется C, оператор сложения работает с целыми числами, значения по умолчанию не определены. Поведение по умолчанию будет восстановлено C 44 | 45 | Минимальная реализация пакета C будет примерно такой: 46 | 47 | package MyMaths; 48 | use warnings; 49 | use strict; 50 | use myint(); 51 | use overload '+' => sub { 52 | my ($l, $r) = @_; 53 | # передать 1, чтобы отметить один вызов уровня отсюда 54 | if (myint::in_effect(1)) { 55 | int($$l) + int($$r); 56 | } else { 57 | $$l + $$r; 58 | } 59 | }; 60 | 61 | sub new { 62 | my ($class, $value) = @_; 63 | bless \$value, $class; 64 | } 65 | 66 | 1; 67 | 68 | Примечание. При загрузке пользовательской прагмы C без параметров С<()> функция C не будет вызвана. 69 | 70 | Взаимодействие с Perl во время компиляции внутри пакета C: 71 | 72 | package myint; 73 | 74 | use strict; 75 | use warnings; 76 | 77 | sub import { 78 | $^H{"myint/in_effect"} = 1; 79 | } 80 | 81 | sub unimport { 82 | $^H{"myint/in_effect"} = 0; 83 | } 84 | 85 | sub in_effect { 86 | my $level = shift // 0; 87 | my $hinthash = (caller($level))[10]; 88 | return $hinthash->{"myint/in_effect"}; 89 | } 90 | 91 | 1; 92 | 93 | Прагма реализована как модуль, поэтому C означает: 94 | 95 | BEGIN { 96 | require myint; 97 | myint->import(); 98 | } 99 | 100 | and C is 101 | 102 | BEGIN { 103 | require myint; 104 | myint->unimport(); 105 | } 106 | 107 | Следовательно, C и C вызываются B<во время компиляции> пользовательского кода. 108 | 109 | Пользовательские прагмы сохраняют свое состояние в магическом хеше C<%^H>, следовательно эти две подпрограммы управляют им. Информация о состоянии в C<%^H> сохраняется в op-дереве, и может быть получено во время выполнения с помощью C, под индексом 10 в возвращённом списке. В прагме из примера восстановление инкапсулировано в подпрограмме C, которая в качестве аргументов принимает единственный параметр - число вызовов, оставшихся для нахождения значения прагмы в пользовательском скрипте. Здесь используется C, чтобы определить значение C<$^H{"myint/in_effect"}>, когда каждая строка пользовательского скрипта была вызвана. Поэтому в подпрограмме, реализующей перегрузку оператора сложения, используется корректная семантика. 110 | 111 | =head1 Ключевые наименования 112 | 113 | Существует только один C<%^H>, но сколь угодно много модулей, которые хотят использовать его обзорного семантики. Чтобы не наступать друг другу на пальцы, они должны быть уверены, чтобы использовать различные ключи в хэше. Поэтому для обычного модуля для использования только ключи, которые начинаются с имени модуля (имя его основной пакет) и символ "/". После этого модуль идентифицирующей префикс, остальная часть ключа полностью зависит от модуля: он может включать любые символы. Например, модуль C должны использовать ключи, такие как C и C. 114 | Модули следующие этому соглашению все дружат друг с другом. 115 | 116 | Ядро Perl использует несколько ключей в C<%^H>, которые не следуют этому соглашению, потому что они предшествуют его. Ключи, которые следуют Конвенция не вступит в противоречие с историческими ключей ядра. 117 | 118 | =head1 Детали реализации 119 | 120 | op-дерево является общим для всех потоков. Это означает, что существует возможность, при которой op-дерево "переживет" поток (и следовательно экземпляр интерпретатора), породивший его.Таким образом, настоящие Perl-скаляры не могут храниться в op-дереве. Вместо этого используется компактная форма, которая может хранить только целые значения (со знаком или без), строки или C; ссылки и числа с плавающей точкой преобразуются в строку. Если вам нужно хранить составные значения или сложные структуры, вам следует сериализовать их , например с помощью C. 121 | Ключи хеша из C<%^H> можно удалять и, как всегда, с помощью C можно понять, является ли это значение определённым или C. 122 | 123 | B<Не> пытайтесь хранить указатели на структуры данных как целые числа, которые получены из C и преобразованы обратно, т.к. это будет не безопасным для потоков. 124 | Доступ к структуре будет неблокирующим (что не безопасно для Perl скаляров). Такие структуры могут давать утечки памяти, либо быть освобождены, когда породивший их поток завершится. Это может произойти до того, как op-дерево удалит ссылки на них, если его поток переживёт их. 125 | 126 | =cut 127 | 128 | =head1 ПЕРЕВОДЧИКИ 129 | 130 | =over 131 | 132 | =item * Николай Мишин C<< >> 133 | 134 | =item * Анатолий Шарифулин C<< >> 135 | 136 | =item * Алексей Суриков (Language) C<< >> 137 | 138 | =item * Михаил Любимов (Language) C<< >> 139 | 140 | =item * Дмитрий Константинов (Language) C<< >> 141 | 142 | =item * Евгений Баранов (Language) C<< >> 143 | 144 | =back 145 | -------------------------------------------------------------------------------- /lib/POD2/RU/perlhacktut.pod: -------------------------------------------------------------------------------- 1 | =encoding utf8 2 | 3 | =for comment 4 | Consistent formatting of this file is achieved with: 5 | perl ./Porting/podtidy pod/perlhacktut.pod 6 | 7 | =head1 NAME/НАИМЕНОВАНИЕ 8 | 9 | perlhacktut - Путь по созданию простого патча на C 10 | 11 | =head1 ОПИСАНИЕ 12 | 13 | This document takes you through a simple patch example. 14 | 15 | If you haven't read L yet, go do that first! You might also 16 | want to read through L too. 17 | 18 | Once you're done here, check out L next. 19 | 20 | =head1 EXAMPLE OF A SIMPLE PATCH 21 | 22 | Let's take a simple patch from start to finish. 23 | 24 | Here's something Larry suggested: if a C is the first active format 25 | during a C, (for example, C) then the 26 | resulting string should be treated as UTF-8 encoded. 27 | 28 | If you are working with a git clone of the Perl repository, you will 29 | want to create a branch for your changes. This will make creating a 30 | proper patch much simpler. See the L for details on how to do 31 | this. 32 | 33 | =head2 Writing the patch 34 | 35 | How do we prepare to fix this up? First we locate the code in question 36 | - the C happens at runtime, so it's going to be in one of the 37 | F files. Sure enough, C is in F. Since we're going 38 | to be altering this file, let's copy it to F. 39 | 40 | [Well, it was in F when this tutorial was written. It has now 41 | been split off with C to its own file, F] 42 | 43 | Now let's look over C: we take a pattern into C, and then 44 | loop over the pattern, taking each format character in turn into 45 | C. Then for each possible format character, we swallow up 46 | the other arguments in the pattern (a field width, an asterisk, and so 47 | on) and convert the next chunk input into the specified format, adding 48 | it onto the output SV C. 49 | 50 | How do we know if the C is the first format in the C? Well, if 51 | we have a pointer to the start of C then, if we see a C we can 52 | test whether we're still at the start of the string. So, here's where 53 | C is set up: 54 | 55 | STRLEN fromlen; 56 | char *pat = SvPVx(*++MARK, fromlen); 57 | char *patend = pat + fromlen; 58 | I32 len; 59 | I32 datumtype; 60 | SV *fromstr; 61 | 62 | We'll have another string pointer in there: 63 | 64 | STRLEN fromlen; 65 | char *pat = SvPVx(*++MARK, fromlen); 66 | char *patend = pat + fromlen; 67 | + char *patcopy; 68 | I32 len; 69 | I32 datumtype; 70 | SV *fromstr; 71 | 72 | And just before we start the loop, we'll set C to be the start 73 | of C: 74 | 75 | items = SP - MARK; 76 | MARK++; 77 | sv_setpvn(cat, "", 0); 78 | + patcopy = pat; 79 | while (pat < patend) { 80 | 81 | Now if we see a C which was at the start of the string, we turn on 82 | the C flag for the output SV, C: 83 | 84 | + if (datumtype == 'U' && pat==patcopy+1) 85 | + SvUTF8_on(cat); 86 | if (datumtype == '#') { 87 | while (pat < patend && *pat != '\n') 88 | pat++; 89 | 90 | Remember that it has to be C because the first character of 91 | the string is the C which has been swallowed into C 92 | 93 | Oops, we forgot one thing: what if there are spaces at the start of the 94 | pattern? C will have C as the first active 95 | character, even though it's not the first thing in the pattern. In this 96 | case, we have to advance C along with C when we see 97 | spaces: 98 | 99 | if (isSPACE(datumtype)) 100 | continue; 101 | 102 | needs to become 103 | 104 | if (isSPACE(datumtype)) { 105 | patcopy++; 106 | continue; 107 | } 108 | 109 | OK. That's the C part done. Now we must do two additional things before 110 | this patch is ready to go: we've changed the behaviour of Perl, and so 111 | we must document that change. We must also provide some more regression 112 | tests to make sure our patch works and doesn't create a bug somewhere 113 | else along the line. 114 | 115 | =head2 Testing the patch 116 | 117 | The regression tests for each operator live in F, and so we make 118 | a copy of F to F. Now we can add our tests 119 | to the end. First, we'll test that the C does indeed create Unicode 120 | strings. 121 | 122 | t/op/pack.t has a sensible ok() function, but if it didn't we could use 123 | the one from t/test.pl. 124 | 125 | require './test.pl'; 126 | plan( tests => 159 ); 127 | 128 | so instead of this: 129 | 130 | print 'not ' unless "1.20.300.4000" eq sprintf "%vd", 131 | pack("U*",1,20,300,4000); 132 | print "ok $test\n"; $test++; 133 | 134 | we can write the more sensible (see L for a full 135 | explanation of is() and other testing functions). 136 | 137 | is( "1.20.300.4000", sprintf "%vd", pack("U*",1,20,300,4000), 138 | "U* produces Unicode" ); 139 | 140 | Now we'll test that we got that space-at-the-beginning business right: 141 | 142 | is( "1.20.300.4000", sprintf "%vd", pack(" U*",1,20,300,4000), 143 | " with spaces at the beginning" ); 144 | 145 | And finally we'll test that we don't make Unicode strings if C is 146 | B the first active format: 147 | 148 | isnt( v1.20.300.4000, sprintf "%vd", pack("C0U*",1,20,300,4000), 149 | "U* not first isn't Unicode" ); 150 | 151 | Mustn't forget to change the number of tests which appears at the top, 152 | or else the automated tester will get confused. This will either look 153 | like this: 154 | 155 | print "1..156\n"; 156 | 157 | or this: 158 | 159 | plan( tests => 156 ); 160 | 161 | We now compile up Perl, and run it through the test suite. Our new 162 | tests pass, hooray! 163 | 164 | =head2 Documenting the patch 165 | 166 | Finally, the documentation. The job is never done until the paperwork 167 | is over, so let's describe the change we've just made. The relevant 168 | place is F; again, we make a copy, and then we'll 169 | insert this text in the description of C: 170 | 171 | =item * 172 | 173 | If the pattern begins with a C, the resulting string will be treated 174 | as UTF-8-encoded Unicode. You can force UTF-8 encoding on in a string 175 | with an initial C, and the bytes that follow will be interpreted as 176 | Unicode characters. If you don't want this to happen, you can begin 177 | your pattern with C (or anything else) to force Perl not to UTF-8 178 | encode your string, and then follow this with a C somewhere in your 179 | pattern. 180 | 181 | =head2 Submit 182 | 183 | See L for details on how to submit this patch. 184 | 185 | =head1 AUTHOR 186 | 187 | This document was originally written by Nathan Torkington, and is 188 | maintained by the perl5-porters mailing list. 189 | 190 | =head1 ПЕРЕВОДЧИКИ 191 | 192 | =over 193 | 194 | =item * Николай Мишин C<< >> 195 | 196 | =back 197 | -------------------------------------------------------------------------------- /lib/POD2/RU/a2p.pod: -------------------------------------------------------------------------------- 1 | 2 | =encoding utf8 3 | 4 | =head1 NAME/НАИМЕНОВАНИЕ 5 | 6 | a2p - Преобразование кода Awk в Perl 7 | 8 | =head1 СИНТАКСИС 9 | 10 | B [I<опции>] [I<имя файла>] 11 | 12 | =head1 ОПИСАНИЕ 13 | 14 | I принимает AWK скрипт, указанный в командной строке или со стандартного ввода и производит похожий I скрипт на стандартный вывод. 15 | 16 | =head2 Параметры 17 | 18 | Параметры включают в себя: 19 | 20 | =over 5 21 | 22 | =item B<-DEnumberE> 23 | 24 | устанавливает флаги отладки. 25 | 26 | =item B<-FEcharacterE> 27 | 28 | говорит a2p что бы этот сценарий AWK всегда вызывается с этой B<-F> 29 | опцией. 30 | 31 | =item B<-nEfieldlistE> 32 | 33 | указывает имена полей ввода, если ввод не должен быть разделен на массив. Если вы переводите сценарий AWK, который обрабатывает файл пароля, вы можете сказать: 34 | 35 | a2p -7 -nlogin.password.uid.gid.gcos.shell.home 36 | 37 | Любой разделитель может быть использован для отделения имен полей. 38 | 39 | =item B<-EnumberE> 40 | 41 | вызов a2p предполагает, что входящие данные будут всегда содержать много полей. 42 | 43 | =item B<-o> 44 | 45 | вызовите a2p для использования старого поведения awk. Текущие отличия: 46 | 47 | =over 5 48 | 49 | =item * 50 | 51 | Старый AWK всегда выполняет цикл по строкам, даже если нет никаких действий, в то время как новый AWK нет. 52 | 53 | =item * 54 | 55 | В старых awk sprintf является очень жадным в своих аргументах. 56 | Например, возьмем выражение 57 | 58 | print sprintf(some_args), extra_args; 59 | 60 | Старый awk считает, что I будут аргументами C; новый awk считает их аргументами C. 61 | 62 | =back 63 | 64 | =back 65 | 66 | =head2 "Соображения" 67 | 68 | A2p не может делать работу по переводу так же хорошо, как человек, но он обычно делает свою работу довольно хорошо. Есть некоторые области, где вы можете изучать perl-скрипт, который создает программа и донастроить его при необходимости. Вот некоторые из них, без особого порядка. 69 | 70 | Существует идиома awk ставить int() вокруг строкового выражения, чтобы сделать преобразование к числу, хотя аргумент всегда целое так или иначе. Это, как правило, не нужно в Perl, но a2p не может сказать, если аргумент всегда будет целое, то он оставляет его целым. Вы можете удалить его. 71 | 72 | Perl отличает числовое сравнение от сравнения строк. Awk 73 | имеет один оператор для обеих операций, который решает что делать во время выполнения. A2p не пытается сделать полную работу по эмуляции AWK в этой точке. Вместо этого он предлагает то, что вы хотите. Это почти всегда верно, но иногда можно впасть в обман (это может быть подделано). Все эти домыслы, помечены комментарием "C<#???>". Вы должны пройти через них и проверить. Возможно, вы захотите запустить по крайней мере один раз с B<-w> опцией to perl, которая предупредит вас если вы используете == где вы должны были использовать eq. 74 | 75 | Perl не пытается эмулировать поведение AWK, в котором несуществующие элементы массива начинают существовать просто по созданию на них ссылки. Если каким-то образом вы полагаетесь на этот механизм для создания пустых записей для последующего для ..., их там не будет в Perl. 76 | 77 | Если a2p делает разбор строки, которая представляет собой список переменных, который выглядит как (Fld1, Fld2, Fld3...) вы можете повторно запустить a2p используя опцию 78 | B<-n> , упомянутую выше. Это позволит вам переименовывать поля во всем сценарии. Вместо этого он разбивает на массив, вероятно, ссылаясь на число полей где-нибудь. 79 | 80 | Для выхода из программы не обязательно ставить оператор EXIT, в AWK программа идет до конца блока, если он есть. Awk сценарии, которые делают искажения до END блока в обход блока при таких обстоятельствах может быть упрощена путем удаления условия в блоке END и просто выходом непосредственно из perl скрипта. 81 | 82 | Perl имеет два вида массивов, численно-индексированных и ассоциативные. 83 | Perl ассоциативные массивы называются "хэшами". Awk массивы, как правило, переводятся в хэши, но если вы ожидаете, что индекс всегда собирается быть числовыми вы могли бы изменить {...}, в [...]. 84 | Перебор хэша может быть с помощью комбинации функции keys(), но это не подходит для перебора массива. Возможно, вам придется изменить цикл, который перебирает такой массив. 85 | 86 | Awk начинает, предполагая OFMT имеет значение %.6g. Perl начинается, предполагая, что его эквивалент, $# должен иметь значение %.20g. Вам придется установить $# явно, если вы используете значение по умолчанию OFMT. 87 | 88 | В верхней части линии цикла будет операция разбиения по частям (split), которая подразумевается в сценарий AWK. Есть моменты, когда вы можете двигаться вниз после некоторых условий, которые проверяют всю запись так, что разбиения не будет сделано, как обычно. 89 | 90 | По эстетическим соображениям вы можете пожелать изменить индексных переменных от того, начинается с 1 (AWK стилю) до 0 на основе (Perl стиль). Будьте тогда намерены изменить все операционные переменные, которые участвуют в поиске. 91 | 92 | Симпатичные комментарии, которые выглядят как "# Это обходной путь, потому что AWK является немым" и пропускает их без изменений. 93 | 94 | Awk скрипты часто встроены в шелл скрипты, которые участвую в конвейере (pipe) на входе и выходе из AWK. Часто обертка скрипта может быть включена в сценарий Perl, так как Perl может начаться до конвейера (pipe - "|" ) в и из себя, и делать другие вещи, которые AWK не может сделать сам по себе. 95 | 96 | Сценарии, которые относятся к специальным переменным RSTART и RLENGTH часто могут быть упрощены путем ссылки на переменные $ `, $ & и $ ', пока они находятся в пределах поиска по шаблону, который устанавливает их. 97 | 98 | Полученный Perl скрипт может иметь подпрограммы, которые определены иметь дело с семантикой AWK относительно getline и print. С a2p обычно выбирает правильности над эффективностью. Почти всегда можно переписать такой код, чтобы быть более эффективным путем отбрасывания семантического сахара. 99 | 100 | Для эффективности, вы можете удалить ключевое слово из любого возвращенного выражения, что является последним оператором выполненным в подпрограмме. А2р ловит самый распространенный случай, но не анализирует встроенные блоки для тонких случаях. 101 | 102 | ARGV[0] переводит к $ARGV0, но ARGV[N] переводит к $ARGV [$n-1]. Цикл, который пытается перебрать ARGV[0] не найдет его. 103 | 104 | =head1 ОКРУЖЕНИЕ 105 | 106 | А2р не использует переменные окружения. 107 | 108 | =head1 АВТОР 109 | 110 | Лари Волл EFE 111 | 112 | =head1 ФАЙЛЫ 113 | 114 | =head2 СМОТРИТЕ ТАКЖЕ 115 | 116 | perl The perl компилятор/интерпретатор 117 | 118 | s2p перевод sed в perl 119 | 120 | =head1 ДИАГНОСТИКА 121 | 122 | =head2 ОШИБКИ 123 | 124 | Можно было бы подражать поведению AWK в выборе строки сравнении числовых операций во время выполнения проверки операнда, но это было бы грубым и неэффективным. Кроме того, A2P почти всегда угадывает правильно. 125 | 126 | Память для синтаксического дерева AWK в настоящее время является статической, и её может не хватить. 127 | 128 | =head1 ПЕРЕВОДЧИКИ 129 | 130 | =over 131 | 132 | =item * Николай Мишин C<< >> 133 | 134 | =back 135 | -------------------------------------------------------------------------------- /xt/04_podspell.t: -------------------------------------------------------------------------------- 1 | use Test::More; 2 | eval q{ use Test::Spelling }; 3 | plan skip_all => "Test::Spelling is not installed." if $@; 4 | add_stopwords(); 5 | set_spell_cmd( 6 | "sp_ch () {(cat $1|aspell --lang=ru-yo list|aspell --lang=en list); };sp_ch" 7 | ); 8 | all_pod_files_spelling_ok('lib'); 9 | __DATA__ 10 | Baranov 11 | ENELL 12 | KSURI 13 | SHARIFULN 14 | ZOFFIX 15 | Znet 16 | Zoffix 17 | llelf 18 | lyubimov 19 | mikhail 20 | zhdinar 21 | VTI 22 | zoffixznet 23 | regop 24 | regops 25 | Nikolay 26 | Mishin 27 | Autoloader 28 | Diablo 29 | Miyagawa 30 | Tatsuhiko 31 | Adriano 32 | Albanowski 33 | Dougherty 34 | Ferreira 35 | PERLDOCDEBUG 36 | UX 37 | Unformatted 38 | brian 39 | foy 40 | Arnfj 41 | FIRSTKEY 42 | NEXTKEY 43 | Optimisation 44 | READONLY 45 | SKIPWHITE 46 | SV 47 | TODO 48 | perlpragma 49 | ACDE 50 | ANDed 51 | PARNO 52 | PerlThink 53 | Posix 54 | RHS 55 | Recursing 56 | aaab 57 | aheads 58 | blurfl 59 | compatibilities 60 | explictly 61 | localizations 62 | matcher 63 | nn 64 | nnn 65 | quotish 66 | readonly 67 | recursed 68 | recursing 69 | reentrancy 70 | reimplementation 71 | righthand 72 | shouldn 73 | th 74 | unclosed 75 | xFF 76 | BOM 77 | BOMless 78 | BOMs 79 | Cn 80 | DeMorgan 81 | HIRAGANA 82 | Hiragana 83 | Kana 84 | Linebreaking 85 | NEL 86 | Posix 87 | Standardese 88 | Unforcing 89 | autodetected 90 | bitness 91 | compat 92 | conformant 93 | counterintuitive 94 | decompositions 95 | directionality 96 | empt 97 | endianness 98 | faux 99 | hiragana 100 | matchable 101 | nonchar 102 | quotish 103 | shouldn 104 | subpragma 105 | syllabaries 106 | utfebcdic 107 | Bourne 108 | CDIMUdmtwW 109 | CGI 110 | CMD 111 | COE 112 | COMSPEC 113 | CSDL 114 | DCL 115 | DDEBUGGING 116 | Dletters 117 | Dnumber 118 | Dp 119 | Dtls 120 | Dx 121 | EXE 122 | Fpattern 123 | Idirectory 124 | LOGDIR 125 | LSP 126 | MMODULE 127 | McAfee 128 | Mmodule 129 | PERLLIB 130 | PERLSHR 131 | Pseudolayer 132 | RLF 133 | Unixi 134 | VMS 135 | cmd 136 | commandline 137 | dt 138 | exe 139 | indir 140 | mmap 141 | mmodule 142 | mysw 143 | octnum 144 | profiler 145 | pseudolayer 146 | xFF 147 | xHHH 148 | xdirectory 149 | ARGVOUT 150 | Initialisation 151 | Localisation 152 | didn 153 | initialisation 154 | initialising 155 | localised 156 | optimisation 157 | optimised 158 | optimiser 159 | perlreguts 160 | pprivate 161 | regnext 162 | regnode 163 | regnodes 164 | tsdy 165 | wasn 166 | casted 167 | checkstr 168 | dualvars 169 | extflags 170 | mgvtbl 171 | minend 172 | ness 173 | optimisations 174 | optimising 175 | perlapi 176 | perlreapi 177 | preconstructed 178 | pregfree 179 | pv 180 | rx 181 | strbeg 182 | strend 183 | stringarg 184 | substituion 185 | unthreaded 186 | FFFF 187 | aren 188 | braceless 189 | caseless 190 | caselessly 191 | limitiations 192 | parenthesization 193 | synonymously 194 | typable 195 | unary 196 | ve 197 | Fld 198 | OFMT 199 | RLENGTH 200 | RSTART 201 | getline 202 | Idir 203 | hv 204 | myconfig 205 | pna 206 | sTtuUWX 207 | SErver 208 | Transmogrifier 209 | clpa 210 | mishin 211 | modularise 212 | xs 213 | CVS 214 | JPRP 215 | OmegaT 216 | Yusuke 217 | Juerd 218 | Waalboer 219 | Kirrily 220 | Skud 221 | Christiansen 222 | Cromie 223 | Foldcase 224 | Iain 225 | Soderberg 226 | Truskett 227 | Wollmann 228 | EBCDIC 229 | PCRE 230 | casefold 231 | ctal 232 | doesn 233 | eXtended 234 | grapheme 235 | isn 236 | Amma 237 | Amphisbaena 238 | Andreas 239 | Arnfjör 240 | Bjarmason 241 | Diab 242 | Dmitry 243 | Goatse 244 | Inkster 245 | Ivey 246 | Jerius 247 | José 248 | Karasik 249 | Krotkine 250 | König 251 | Mengué 252 | NCC 253 | OSCON 254 | Orton 255 | Pagaltzis 256 | Pau 257 | PerlMonks 258 | Rafaël 259 | Salzenberg 260 | Savige 261 | Thoennes 262 | Tye 263 | Vuets 264 | Yitzchak 265 | Zefram 266 | babycart 267 | demonstrandum 268 | erat 269 | heredoc 270 | idiome 271 | perlsecret 272 | quod 273 | registr 274 | ACM 275 | Ævar 276 | linebreak 277 | metasymbol 278 | oCtet 279 | perlrebackslash 280 | thai 281 | perlreref 282 | hasn 283 | env 284 | perlintro 285 | perlcheat 286 | ru 287 | sourceforge 288 | aXXXb 289 | runtime 290 | REx 291 | aa 292 | ATGC 293 | housecat 294 | cathouse 295 | ba 296 | bb 297 | bc 298 | bd 299 | ddd 300 | das 301 | charnames 302 | Kimball 303 | IsCntrl 304 | IsGraph 305 | LMNPS 306 | cd 307 | ATC 308 | dec 309 | STDERR 310 | toto 311 | bert 312 | dD 313 | chr 314 | optimizations 315 | de 316 | df 317 | saippuakauppias 318 | aaaaabb 319 | pragma 320 | perl 321 | Sabbathize 322 | catenates 323 | lexically 324 | eE 325 | ef 326 | fA 327 | der 328 | regex 329 | elsif 330 | abcdef 331 | fg 332 | gc 333 | cZ 334 | IsDigit 335 | TGA 336 | eq 337 | TGC 338 | gi 339 | cdef 340 | perlretut 341 | hh 342 | perlunitut 343 | termcap 344 | dir 345 | pragmas 346 | IsPrint 347 | booboo 348 | multi 349 | Sabbathizes 350 | IsSpace 351 | dna 352 | foreach 353 | lc 354 | xyz 355 | progra 356 | POSTMATCH 357 | li 358 | minlen 359 | PREMATCH 360 | GAA 361 | LM 362 | GAC 363 | binmode 364 | katakana 365 | lp 366 | cntrl 367 | incrementing 368 | IsASCII 369 | LMN 370 | aaaa 371 | RegExp 372 | bcat 373 | Ukeypunch 374 | mr 375 | savestack 376 | Pe 377 | printf 378 | bertram 379 | expr 380 | IsWord 381 | IsAlpha 382 | pM 383 | chmod 384 | STDOUT 385 | rf 386 | perlunicode 387 | oW 388 | str 389 | Pinyan 390 | Mmm 391 | AWho 392 | xdigit 393 | multiline 394 | abcde 395 | subexpression 396 | qw 397 | sm 398 | oct 399 | xaa 400 | abba 401 | sS 402 | ss 403 | ming 404 | IsPunct 405 | aaa 406 | supercalifragilisticexpialidocious 407 | abcd 408 | donut 409 | aba 410 | IsAlnum 411 | AAG 412 | abc 413 | aeiou 414 | abd 415 | ut 416 | acb 417 | fmt 418 | greek 419 | QThat 420 | perldebguts 421 | xat 422 | zA 423 | mrs 424 | goto 425 | aat 426 | ATCGTTGAAT 427 | utf 428 | yaa 429 | ascii 430 | patt 431 | IsSpacePerl 432 | usr 433 | debugcolor 434 | txt 435 | O'Reilly 436 | substrings 437 | yY 438 | sabbath 439 | keymatch 440 | eval 441 | perlfunc 442 | housecats 443 | STDIN 444 | dogbert 445 | yyyy 446 | perlrecharclass 447 | Kvale 448 | zaa 449 | fooooba 450 | perlop 451 | POSIX 452 | dilbert 453 | IsUpper 454 | baz 455 | perlre 456 | num 457 | bcr 458 | Haworth 459 | unicode 460 | toks 461 | codon 462 | punct 463 | osg 464 | substr 465 | lang 466 | kwds 467 | ATCGTTGAATGCAAATGACATGAC 468 | catwords 469 | alnum 470 | dirs 471 | nWho 472 | GTT 473 | IsLower 474 | Friedl 475 | IsBlank 476 | pos 477 | IsXDigit 478 | ing 479 | ARGV 480 | DBM 481 | Dwimming 482 | EDitor 483 | FMTEYEWTK 484 | GPL 485 | GV 486 | Graeco 487 | IPC 488 | Korn 489 | McGillicuddy 490 | NFD 491 | NFKC 492 | NFKD 493 | Numification 494 | PDP 495 | Pern 496 | Pragmantic 497 | Pseduohashes 498 | SysV 499 | TCP 500 | TMTOWTDI 501 | Tengwar 502 | UDP 503 | WebCruncher 504 | algorithmically 505 | allotrope 506 | autodecrement 507 | autogeneration 508 | casefolding 509 | casemap 510 | casemapping 511 | casemaps 512 | circumfix 513 | comboflux 514 | creaturism 515 | cuttable 516 | declarator 517 | decrement 518 | defranishizing 519 | disambiguated 520 | dweomer 521 | dweomercraft 522 | dwimmer 523 | dwimming 524 | eXternal 525 | featurism 526 | feeping 527 | foldcase 528 | graphene 529 | hackerdom 530 | jee 531 | keh 532 | lexeme 533 | lexemes 534 | lvaluable 535 | minicpan 536 | modifiability 537 | moh 538 | mojibake 539 | mro 540 | multithreading 541 | multiway 542 | needn 543 | nonarchitecture 544 | nonbacktrackable 545 | nondeterministic 546 | nonletters 547 | nonnewline 548 | nonspacing 549 | nontext 550 | nonwhitespace 551 | numen 552 | numification 553 | numina 554 | nummification 555 | nummify 556 | orcs 557 | passant 558 | perlglossary 559 | perly 560 | ph 561 | polychromos 562 | polymorphism 563 | postfix 564 | preindustrial 565 | preprocessing 566 | preprocessor 567 | pseudofunction 568 | pseudohash 569 | pseudoliteral 570 | pseudopackage 571 | regurgalator 572 | résumé 573 | septisyllabically 574 | subgoal 575 | syntaxes 576 | tokener 577 | tokenizing 578 | trinary 579 | troff 580 | unexploitable 581 | unsets 582 | vitæ 583 | weren 584 | -------------------------------------------------------------------------------- /xt/09_podspell_unicodetut.t: -------------------------------------------------------------------------------- 1 | use Test::More; 2 | eval q{ use Test::Spelling }; 3 | plan skip_all => "Test::Spelling is not installed." if $@; 4 | add_stopwords(); 5 | set_spell_cmd( 6 | "sp_ch () {(cat $1|aspell --lang=ru-yo list|aspell --lang=en list); };sp_ch" 7 | ); 8 | all_pod_files_spelling_ok('lib/POD2/RU/perlunitut.pod'); 9 | __DATA__ 10 | Baranov 11 | ENELL 12 | KSURI 13 | SHARIFULN 14 | ZOFFIX 15 | Znet 16 | Zoffix 17 | llelf 18 | lyubimov 19 | mikhail 20 | zhdinar 21 | VTI 22 | zoffixznet 23 | regop 24 | regops 25 | Nikolay 26 | Mishin 27 | Autoloader 28 | Diablo 29 | Miyagawa 30 | Tatsuhiko 31 | Adriano 32 | Albanowski 33 | Dougherty 34 | Ferreira 35 | PERLDOCDEBUG 36 | UX 37 | Unformatted 38 | brian 39 | foy 40 | Arnfj 41 | FIRSTKEY 42 | NEXTKEY 43 | Optimisation 44 | READONLY 45 | SKIPWHITE 46 | SV 47 | TODO 48 | perlpragma 49 | ACDE 50 | ANDed 51 | PARNO 52 | PerlThink 53 | Posix 54 | RHS 55 | Recursing 56 | aaab 57 | aheads 58 | blurfl 59 | compatibilities 60 | explictly 61 | localizations 62 | matcher 63 | nn 64 | nnn 65 | quotish 66 | readonly 67 | recursed 68 | recursing 69 | reentrancy 70 | reimplementation 71 | righthand 72 | shouldn 73 | th 74 | unclosed 75 | xFF 76 | BOM 77 | BOMless 78 | BOMs 79 | Cn 80 | DeMorgan 81 | HIRAGANA 82 | Hiragana 83 | Kana 84 | Linebreaking 85 | NEL 86 | Posix 87 | Standardese 88 | Unforcing 89 | autodetected 90 | bitness 91 | compat 92 | conformant 93 | counterintuitive 94 | decompositions 95 | directionality 96 | empt 97 | endianness 98 | faux 99 | hiragana 100 | matchable 101 | nonchar 102 | quotish 103 | shouldn 104 | subpragma 105 | syllabaries 106 | utfebcdic 107 | Bourne 108 | CDIMUdmtwW 109 | CGI 110 | CMD 111 | COE 112 | COMSPEC 113 | CSDL 114 | DCL 115 | DDEBUGGING 116 | Dletters 117 | Dnumber 118 | Dp 119 | Dtls 120 | Dx 121 | EXE 122 | Fpattern 123 | Idirectory 124 | LOGDIR 125 | LSP 126 | MMODULE 127 | McAfee 128 | Mmodule 129 | PERLLIB 130 | PERLSHR 131 | Pseudolayer 132 | RLF 133 | Unixi 134 | VMS 135 | cmd 136 | commandline 137 | dt 138 | exe 139 | indir 140 | mmap 141 | mmodule 142 | mysw 143 | octnum 144 | profiler 145 | pseudolayer 146 | xFF 147 | xHHH 148 | xdirectory 149 | ARGVOUT 150 | Initialisation 151 | Localisation 152 | didn 153 | initialisation 154 | initialising 155 | localised 156 | optimisation 157 | optimised 158 | optimiser 159 | perlreguts 160 | pprivate 161 | regnext 162 | regnode 163 | regnodes 164 | tsdy 165 | wasn 166 | casted 167 | checkstr 168 | dualvars 169 | extflags 170 | mgvtbl 171 | minend 172 | ness 173 | optimisations 174 | optimising 175 | perlapi 176 | perlreapi 177 | preconstructed 178 | pregfree 179 | pv 180 | rx 181 | strbeg 182 | strend 183 | stringarg 184 | substituion 185 | unthreaded 186 | FFFF 187 | aren 188 | braceless 189 | caseless 190 | caselessly 191 | limitiations 192 | parenthesization 193 | synonymously 194 | typable 195 | unary 196 | ve 197 | Fld 198 | OFMT 199 | RLENGTH 200 | RSTART 201 | getline 202 | Idir 203 | hv 204 | myconfig 205 | pna 206 | sTtuUWX 207 | SErver 208 | Transmogrifier 209 | clpa 210 | mishin 211 | modularise 212 | xs 213 | CVS 214 | JPRP 215 | OmegaT 216 | Yusuke 217 | Juerd 218 | Waalboer 219 | Kirrily 220 | Skud 221 | Christiansen 222 | Cromie 223 | Foldcase 224 | Iain 225 | Soderberg 226 | Truskett 227 | Wollmann 228 | EBCDIC 229 | PCRE 230 | casefold 231 | ctal 232 | doesn 233 | eXtended 234 | grapheme 235 | isn 236 | Amma 237 | Amphisbaena 238 | Andreas 239 | Arnfjör 240 | Bjarmason 241 | Diab 242 | Dmitry 243 | Goatse 244 | Inkster 245 | Ivey 246 | Jerius 247 | José 248 | Karasik 249 | Krotkine 250 | König 251 | Mengué 252 | NCC 253 | OSCON 254 | Orton 255 | Pagaltzis 256 | Pau 257 | PerlMonks 258 | Rafaël 259 | Salzenberg 260 | Savige 261 | Thoennes 262 | Tye 263 | Vuets 264 | Yitzchak 265 | Zefram 266 | babycart 267 | demonstrandum 268 | erat 269 | heredoc 270 | idiome 271 | perlsecret 272 | quod 273 | registr 274 | ACM 275 | Ævar 276 | linebreak 277 | metasymbol 278 | oCtet 279 | perlrebackslash 280 | thai 281 | perlreref 282 | hasn 283 | env 284 | perlintro 285 | perlcheat 286 | ru 287 | sourceforge 288 | aXXXb 289 | runtime 290 | REx 291 | aa 292 | ATGC 293 | housecat 294 | cathouse 295 | ba 296 | bb 297 | bc 298 | bd 299 | ddd 300 | das 301 | charnames 302 | Kimball 303 | IsCntrl 304 | IsGraph 305 | LMNPS 306 | cd 307 | ATC 308 | dec 309 | STDERR 310 | toto 311 | bert 312 | dD 313 | chr 314 | optimizations 315 | de 316 | df 317 | saippuakauppias 318 | aaaaabb 319 | pragma 320 | perl 321 | Sabbathize 322 | catenates 323 | lexically 324 | eE 325 | ef 326 | fA 327 | der 328 | regex 329 | elsif 330 | abcdef 331 | fg 332 | gc 333 | cZ 334 | IsDigit 335 | TGA 336 | eq 337 | TGC 338 | gi 339 | cdef 340 | perlretut 341 | hh 342 | perlunitut 343 | termcap 344 | dir 345 | pragmas 346 | IsPrint 347 | booboo 348 | multi 349 | Sabbathizes 350 | IsSpace 351 | dna 352 | foreach 353 | lc 354 | xyz 355 | progra 356 | POSTMATCH 357 | li 358 | minlen 359 | PREMATCH 360 | GAA 361 | LM 362 | GAC 363 | binmode 364 | katakana 365 | lp 366 | cntrl 367 | incrementing 368 | IsASCII 369 | LMN 370 | aaaa 371 | RegExp 372 | bcat 373 | Ukeypunch 374 | mr 375 | savestack 376 | Pe 377 | printf 378 | bertram 379 | expr 380 | IsWord 381 | IsAlpha 382 | pM 383 | chmod 384 | STDOUT 385 | rf 386 | perlunicode 387 | oW 388 | str 389 | Pinyan 390 | Mmm 391 | AWho 392 | xdigit 393 | multiline 394 | abcde 395 | subexpression 396 | qw 397 | sm 398 | oct 399 | xaa 400 | abba 401 | sS 402 | ss 403 | ming 404 | IsPunct 405 | aaa 406 | supercalifragilisticexpialidocious 407 | abcd 408 | donut 409 | aba 410 | IsAlnum 411 | AAG 412 | abc 413 | aeiou 414 | abd 415 | ut 416 | acb 417 | fmt 418 | greek 419 | QThat 420 | perldebguts 421 | xat 422 | zA 423 | mrs 424 | goto 425 | aat 426 | ATCGTTGAAT 427 | utf 428 | yaa 429 | ascii 430 | patt 431 | IsSpacePerl 432 | usr 433 | debugcolor 434 | txt 435 | O'Reilly 436 | substrings 437 | yY 438 | sabbath 439 | keymatch 440 | eval 441 | perlfunc 442 | housecats 443 | STDIN 444 | dogbert 445 | yyyy 446 | perlrecharclass 447 | Kvale 448 | zaa 449 | fooooba 450 | perlop 451 | POSIX 452 | dilbert 453 | IsUpper 454 | baz 455 | perlre 456 | num 457 | bcr 458 | Haworth 459 | unicode 460 | toks 461 | codon 462 | punct 463 | osg 464 | substr 465 | lang 466 | kwds 467 | ATCGTTGAATGCAAATGACATGAC 468 | catwords 469 | alnum 470 | dirs 471 | nWho 472 | GTT 473 | IsLower 474 | Friedl 475 | IsBlank 476 | pos 477 | IsXDigit 478 | ing 479 | ARGV 480 | DBM 481 | Dwimming 482 | EDitor 483 | FMTEYEWTK 484 | GPL 485 | GV 486 | Graeco 487 | IPC 488 | Korn 489 | McGillicuddy 490 | NFD 491 | NFKC 492 | NFKD 493 | Numification 494 | PDP 495 | Pern 496 | Pragmantic 497 | Pseduohashes 498 | SysV 499 | TCP 500 | TMTOWTDI 501 | Tengwar 502 | UDP 503 | WebCruncher 504 | algorithmically 505 | allotrope 506 | autodecrement 507 | autogeneration 508 | casefolding 509 | casemap 510 | casemapping 511 | casemaps 512 | circumfix 513 | comboflux 514 | creaturism 515 | cuttable 516 | declarator 517 | decrement 518 | defranishizing 519 | disambiguated 520 | dweomer 521 | dweomercraft 522 | dwimmer 523 | dwimming 524 | eXternal 525 | featurism 526 | feeping 527 | foldcase 528 | graphene 529 | hackerdom 530 | jee 531 | keh 532 | lexeme 533 | lexemes 534 | lvaluable 535 | minicpan 536 | modifiability 537 | moh 538 | mojibake 539 | mro 540 | multithreading 541 | multiway 542 | needn 543 | nonarchitecture 544 | nonbacktrackable 545 | nondeterministic 546 | nonletters 547 | nonnewline 548 | nonspacing 549 | nontext 550 | nonwhitespace 551 | numen 552 | numification 553 | numina 554 | nummification 555 | nummify 556 | orcs 557 | passant 558 | perlglossary 559 | perly 560 | ph 561 | polychromos 562 | polymorphism 563 | postfix 564 | preindustrial 565 | preprocessing 566 | preprocessor 567 | pseudofunction 568 | pseudohash 569 | pseudoliteral 570 | pseudopackage 571 | regurgalator 572 | résumé 573 | septisyllabically 574 | subgoal 575 | syntaxes 576 | tokener 577 | tokenizing 578 | trinary 579 | troff 580 | unexploitable 581 | unsets 582 | vitæ 583 | weren 584 | Goossen 585 | Lukas 586 | PNG 587 | Pieter 588 | Johan 589 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/mishin/POD-to-RU.svg?branch=master)](https://travis-ci.org/mishin/POD-to-RU) 2 | [![Coverage Status](https://coveralls.io/repos/mishin/POD-to-RU/badge.svg?branch=master)](https://coveralls.io/r/mishin/POD-to-RU?branch=master) 3 | [![Kwalitee status](http://cpants.cpanauthors.org/dist/POD2-RU.png)](http://cpants.charsbar.org/dist/overview/POD2-RU) 4 | [![GitHub issues](https://img.shields.io/github/issues/mishin/POD-to-RU.svg)](https://github.com/mishin/POD-to-RU/issues) 5 | [![Cpan license](https://img.shields.io/cpan/l/POD2-RU.svg)](https://metacpan.org/release/POD2-RU) 6 | [![Cpan version](https://img.shields.io/cpan/v/POD2-RU.svg)](https://metacpan.org/release/POD2-RU) 7 | 8 | # NAME 9 | 10 | POD2::RU - Документация Perl по-русски 11 | 12 | # SYNOPSIS 13 | 14 | use POD2::RU; 15 | print_pods(); 16 | print_pod('perlre', 'perlootut'); 17 | 18 | # DESCRIPTION 19 | 20 | POD2::RU - проект перевода Perl-документации на русский язык. 21 | 22 | # REPOSITORY 23 | 24 | Домашняя страница проекта ─ [https://github.com/mishin/POD-to-RU](https://github.com/mishin/POD-to-RU). 25 | 26 | # USAGE 27 | 28 | Примеры использования 29 | 30 | perldoc POD2::RU::perlretut 31 | 32 | perl -MPOD2::RU -e 'print_pods' 33 | perl -MPOD2::RU -e 'print_pod <название_pod1> [<название_pod2> ...]' 34 | 35 | use POD2::RU; 36 | print_pods(); 37 | print_pod('pod_foo', 'pod_baz'); 38 | 39 | После установки пакета, вы можете использовать следующую команду, чтобы получить документацию: 40 | 41 | perldoc POD2::RU::<название_pod> 42 | 43 | Начиная с Pod::Perldoc версии 3.14 можно использовать следующий синтаксис: 44 | 45 | perldoc -L RU <название_pod> 46 | perldoc -L RU -f <функция> 47 | perldoc -L RU -q <регулярное выражение для FAQ> 48 | 49 | Модификатор `-L` определяет код языка перевода. Если пакет `POD2::<код_языка>` не существует, то модификатор игнорируется. 50 | 51 | Для ленивых можно добавить псевдоним (alias): 52 | 53 | perldoc-ru="perldoc -L RU" 54 | 55 | для того, чтобы не писать модификатор `-L` каждый раз: 56 | 57 | perldoc-ru perlre 58 | perldoc-ru -f map 59 | 60 | Начиная с `Pod::Perldoc` версии 3.15 вы можете использовать переменную среды PERLDOC\_POD2. Если эта переменная установлена в '1', то perldoc осуществляет поиск pod документации на языке, указанном в переменной LC\_ALL, LANG или LC\_LANG. Или же вы можете установить значение "ru", означающее вывод документации на русском языке. Например, 61 | 62 | export PERLDOC_POD2="ru" 63 | perldoc perl 64 | 65 | # API 66 | 67 | Пакет экспортирует следующие функции: 68 | 69 | - `new` 70 | 71 | Была добавлена для совместимости с `perldoc` Perl 5.10.1. 72 | [Pod::Perldoc](https://metacpan.org/pod/Pod::Perldoc) использует ее для возврата имени пакета перевода. 73 | 74 | - `pod_dirs` 75 | 76 | Была добавлена для совместимости с `perldoc` Perl 5.10.1. 77 | [Pod::Perldoc](https://metacpan.org/pod/Pod::Perldoc) использует ее для определения, где искать переведенные файлы. 78 | 79 | - `print_pods` 80 | 81 | Выводит все переведенные части и оригинальную версию Perl. 82 | 83 | - `print_pod` 84 | 85 | Выводит на экран оригинальнуя версию Perl для всех частей, переданых в качестве аргументов. 86 | 87 | - `search_perlfunc_re` 88 | 89 | `perldoc -f function` использует возвращаемое значение этой функции (как regexp), чтобы пропустить введение и найти список функций. 90 | 91 | - `pod_info` 92 | 93 | ` - Выдает хэш с текущими pod файлами в данном дистрибутиве 94 | 95 | # AUTHOR 96 | 97 | Nikolay Mishin < mi@ya.ru > 98 | 99 | # CONTRIBUTORS 100 | 101 | - Анатолий Шарифулин ([SHARIFULN](https://metacpan.org/author/SHARIFULN)) 102 | - Андрей Шитов ([ANDY](https://metacpan.org/author/ANDY)) 103 | - Алексей Суриков ([KSURI](https://metacpan.org/author/KSURI)) 104 | - Михаил Любимов ([mikhail.lyubimov](http://event.perlrussia.ru/rpw2008/user/4579)) 105 | - Дмитрий Константинов ([Dim\_K](http://www.weblancer.net/users/Dim_K/portfolio/)) 106 | - Евгений Баранов ([Baranov](http://event.yapcrussia.org/mayperl2/user/161)) 107 | - Антон Никишаев ([llelf](https://github.com/llelf)) 108 | - Динар Жамалиев ([zhdinar](http://blog.perl5doc.ru)) 109 | - Валерий Кравчук ([valera@openxs.kiev.ua](http://www.opennet.ru/search.shtml?exclude=index|%2Fman.shtml&words=valera%40openxs.kiev.ua)) 110 | - Enrique Nell ([ENELL](https://metacpan.org/author/ENELL)) 111 | - Yusuke Kawasaki ([KAWASAKI](https://metacpan.org/author/KAWASAKI)) 112 | - Вячеслав Тихановский ([VTI](https://metacpan.org/author/VTI)) 113 | - Zoffix Znet ([ZOFFIX](https://metacpan.org/author/ZOFFIX)) 114 | - Дмитрий Анисимов 115 | - Андрей Варлашкин 116 | - Кирилл Флоренский 117 | - Андрей Асякин ([asan999](https://metacpan.org/pod/asan999 at gmail.com)) 118 | 119 | # COPYRIGHT 120 | 121 | Copyright 2015- Nikolay Mishin 122 | 123 | # LICENSE 124 | 125 | This library is free software; you can redistribute it and/or modify 126 | it under the same terms as Perl itself. 127 | 128 | # REPOSITORY 129 | 130 | [https://github.com/mishin/POD-to-RU](https://github.com/mishin/POD-to-RU) 131 | 132 | # SUPPORT 133 | 134 | This module is managed in an open [GitHub 135 | repository](http://github.com/mishin/POD-to-RU/). Feel free to fork and 136 | contribute, or to clone [git://github.com/mishin/POD-to-RU.git](git://github.com/mishin/POD-to-RU.git) and send 137 | patches! 138 | 139 | Found a bug? Please [post](http://github.com/perl-pod/test-pod/issues) a report! 140 | 141 | # SEE ALSO 142 | 143 | [POD2::ES](https://metacpan.org/pod/POD2::ES), [POD2::PT\_BR](https://metacpan.org/pod/POD2::PT_BR), [POD2::IT](https://metacpan.org/pod/POD2::IT), [POD2::FR](https://metacpan.org/pod/POD2::FR), [POD2::LT](https://metacpan.org/pod/POD2::LT). 144 | 145 | # DONATIONS 146 | 147 | Проект перевода документации Perl требует постоянных усилий, что доступно только для сильных духом и альтруистов. 148 | Авторы не просят, но ни не отвергают помощь в виде денег, книг, сыра и продуктов из свинины (можно хамон;) ), или даже поездки в Полинезию для снижения утомления и сохранения боевого духа команды. Мы приглашаем всех. (стащено и переведено отсюда [POD2::ES](https://metacpan.org/pod/POD2::ES)) 149 | 150 | # THANKS 151 | 152 | Авторы хотели бы выразить свою благодарность команде разработчиков OmegaT, инструмента, который используется для перевода. 153 | 154 | Проект OmegaT: [http://omegat.org/](http://omegat.org/) 155 | 156 | Также хотелось бы выразить благодарность автору перевода perl документации на испанский язык 157 | POD2::ES Enrique Nell за его в помощь в написании скриптов. 158 | 159 | Проект POD2::ES: [https://github.com/zipf/perldoc-es](https://github.com/zipf/perldoc-es) 160 | 161 | Благодарность Yusuke Kawasaki за совет разместить весь проект на github 162 | на вопрос о японской документации он ответил: 163 | They (JPRP people) uses sourceforge and its CVS. 164 | 165 | [http://sourceforge.jp/cvs/view/perldocjp/docs/modules/](http://sourceforge.jp/cvs/view/perldocjp/docs/modules/) 166 | 167 | They are using a traditional mailing list and sourceforge's bug tracking system. In my opinion, github would be a much better way to manage those things at the moment. github was not exist when they started the project. 168 | 169 | Спасибо Яндекс Спеллеру [https://tech.yandex.ru/speller/](https://tech.yandex.ru/speller/), [http://speller.yandex.net/speller/1.0/index.html](http://speller.yandex.net/speller/1.0/index.html) за то, что через него можно прогнать русский 170 | текст и удобно исправить ошибки! 171 | 172 | Спасибо сайту [http://online.orfo.ru/](http://online.orfo.ru/) - он выручал даже тогда, когда был бессилен Яндекс Спеллер. 173 | 174 | Спасибо переводчику [http://www.bing.com/translator/](http://www.bing.com/translator/) за хороший предварительный перевод, 175 | но помучаться все равно придется, получается пока сыро;) 176 | 177 | Спасибо [Mail.ru](https://metacpan.org/pod/Mail.ru) за проведение конференции YAPC Russia 2015 178 | и лично Павлу Щербинину. 179 | -------------------------------------------------------------------------------- /lib/POD2/RU/perlbook.pod: -------------------------------------------------------------------------------- 1 | 2 | =encoding utf8 3 | 4 | =head1 NAME/НАИМЕНОВАНИЕ 5 | 6 | perlbook - Информация о книгах по Perl 7 | 8 | =head1 ОПИСАНИЕ 9 | 10 | Есть много книг по Perl и связанных с Perl. Некоторые из них хорошие, некоторые в порядке, но многие из них не стоят ваших денег. Существует список этих книг, некоторые из которых имеют обширные обзоры, на http://books.perl.org/. Перечислим некоторые из книг здесь, и перечисляя книги подразумеваем нашу поддержку, не думаю, что не включение книги что-нибудь означает. 11 | 12 | Большинство из этих книг доступны в онлайновом режиме через Safari Books Online (http://safaribooksonline.com/). 13 | 14 | =head2 Самые популярные книги 15 | 16 | Основной справочник по Perl, написанный создателем Perl, это I (Программирование на Perl): 17 | 18 | =over 4 19 | 20 | =item I<Программирование на Perl> ("Camel Book"): 21 | 22 | by Tom Christiansen, brian d foy, Larry Wall with Jon Orwant 23 | ISBN 978-0-596-00492-7 [4th edition February 2012] 24 | ISBN 978-1-4493-9890-3 [ebook] 25 | http://oreilly.com/catalog/9780596004927 26 | 27 | =back 28 | 29 | Ram представляет собой сборник рецептов с сотнями примеров использования кода Perl для выполнения конкретных задач: 30 | 31 | =over 4 32 | 33 | =item I (the "Ram Book"): 34 | 35 | by Tom Christiansen and Nathan Torkington, 36 | with Foreword by Larry Wall 37 | ISBN 978-0-596-00313-5 [2nd Edition August 2003] 38 | http://oreilly.com/catalog/9780596003135/ 39 | 40 | =back 41 | 42 | Если вы хотите научиться основам Perl, вы можете начать с книги Лама, который предполагает, что вы уже кое-что знаете о программировании: 43 | 44 | =over 4 45 | 46 | =item I (the "Llama Book") 47 | 48 | by Randal L. Schwartz, Tom Phoenix, and brian d foy 49 | ISBN 978-1-4493-0358-7 [6th edition June 2011] 50 | http://oreilly.com/catalog/0636920018452 51 | 52 | =back 53 | 54 | Учебник начатый в Ламе продолжается в Aльпаке, который вводит промежуточные фичи (intermediate features), такие как ссылки, структуры данных, объектно-ориентированного программирование и модули: 55 | 56 | =over 4 57 | 58 | =item I (I) ("Alpaca Book") 59 | 60 | by Randal L. Schwartz and brian d foy, with Tom Phoenix 61 | foreword by Damian Conway 62 | ISBN 978-1-4493-9309-0 [2nd edition August 2012] 63 | http://oreilly.com/catalog/0636920012689/ 64 | 65 | =back 66 | 67 | =head2 Литература 68 | 69 | Возможно, вы захотите, чтобы эти ссылки столе рядом с вашей клавиатурой: 70 | 71 | =over 4 72 | 73 | =item I 74 | 75 | by Johan Vromans 76 | ISBN 978-1-4493-0370-9 [5th edition July 2011] 77 | ISBN 978-1-4493-0813-1 [ebook] 78 | http://oreilly.com/catalog/0636920018476/ 79 | 80 | =item I 81 | 82 | by Richard Foley 83 | ISBN 978-0-596-00503-0 [1st edition January 2004] 84 | http://oreilly.com/catalog/9780596005030/ 85 | 86 | =item I 87 | 88 | by Tony Stubblebine 89 | ISBN 978-0-596-51427-3 [July 2007] 90 | http://oreilly.com/catalog/9780596514273/ 91 | 92 | =back 93 | 94 | =head2 Учебники 95 | 96 | =over 4 97 | 98 | =item I 99 | 100 | by James Lee 101 | ISBN 1-59059-391-X [3rd edition April 2010] 102 | http://www.apress.com/9781430227939 103 | 104 | =item I 105 | 106 | by Randal L. Schwartz, Tom Phoenix, and brian d foy 107 | ISBN 978-0-596-52010-6 [5th edition June 2008] 108 | http://oreilly.com/catalog/9780596520106 109 | 110 | =item I (I) ("Alpaca Book") 111 | 112 | by Randal L. Schwartz and brian d foy, with Tom Phoenix 113 | foreword by Damian Conway 114 | ISBN 0-596-10206-2 [1st edition March 2006] 115 | http://oreilly.com/catalog/9780596102067 116 | 117 | =item I (I<Освоение Perl>) 118 | 119 | by brian d foy 120 | ISBN 978-0-596-10206-7 [1st edition July 2007] 121 | http://www.oreilly.com/catalog/9780596527242 122 | 123 | =item I (I<Эффективное программирование на Perl>) 124 | 125 | by Joseph N. Hall, Joshua A. McAdams, brian d foy 126 | ISBN 0-321-49694-9 [2nd edition 2010] 127 | http://www.effectiveperlprogramming.com/ 128 | 129 | =back 130 | 131 | =head2 Ориентированные на специальные задачи 132 | 133 | =over 4 134 | 135 | =item I (I<Написание модулей Perl для CPAN>) 136 | 137 | by Sam Tregar 138 | ISBN 1-59059-018-X [1st edition August 2002] 139 | http://www.apress.com/9781590590188 140 | 141 | =item I 142 | 143 | by Tom Christiansen and Nathan Torkington 144 | with foreword by Larry Wall 145 | ISBN 1-56592-243-3 [2nd edition August 2003] 146 | http://oreilly.com/catalog/9780596003135 147 | 148 | =item I (I<Автоматизация системного администрирования с помощью Perl>) 149 | 150 | by David N. Blank-Edelman 151 | ISBN 978-0-596-00639-6 [2nd edition May 2009] 152 | http://oreilly.com/catalog/9780596006396 153 | 154 | =item I (I<Реальный мир администрирования SQL Server с Perl>) 155 | 156 | by Linchi Shea 157 | ISBN 1-59059-097-X [1st edition July 2003] 158 | http://www.apress.com/9781590590973 159 | 160 | =back 161 | 162 | =head2 Специальные темы 163 | 164 | =over 4 165 | 166 | =item I (I<Книга рецептов по регулярным выражениям>) 167 | 168 | by Jan Goyvaerts and Steven Levithan 169 | ISBN 978-0-596-52069-4 [May 2009] 170 | http://oreilly.com/catalog/9780596520694 171 | 172 | =item I 173 | 174 | by Tim Bunce and Alligator Descartes 175 | ISBN 978-1-56592-699-8 [February 2000] 176 | http://oreilly.com/catalog/9781565926998 177 | 178 | =item I (I<Лучшие Практики Perl>) 179 | 180 | by Damian Conway 181 | ISBN: 978-0-596-00173-5 [1st edition July 2005] 182 | http://oreilly.com/catalog/9780596001735 183 | 184 | =item I 185 | 186 | =item I 187 | 188 | by Mark-Jason Dominus 189 | ISBN: 1-55860-701-3 [1st edition March 2005] 190 | http://hop.perl.plover.com/ 191 | 192 | =item I 193 | 194 | =item I<Освоение регулярных выражений> 195 | 196 | by Jeffrey E. F. Friedl 197 | ISBN 978-0-596-52812-6 [3rd edition August 2006] 198 | http://oreilly.com/catalog/9780596528126 199 | 200 | =item I 201 | 202 | =item I<Сетевое программирование в Perl> 203 | 204 | by Lincoln Stein 205 | ISBN 0-201-61571-1 [1st edition 2001] 206 | http://www.pearsonhighered.com/educator/product/Network-Programming-with-Perl/9780201615715.page 207 | 208 | =item I 209 | 210 | by Darren Chamberlain, Dave Cross, and Andy Wardley 211 | ISBN 978-0-596-00476-7 [December 2003] 212 | http://oreilly.com/catalog/9780596004767 213 | 214 | =item I 215 | 216 | =item I<Объектно-ориентированный Perl> 217 | 218 | by Damian Conway 219 | with foreword by Randal L. Schwartz 220 | ISBN 1-884777-79-1 [1st edition August 1999] 221 | http://www.manning.com/conway/ 222 | 223 | =item I 224 | 225 | =item I<Манипулирование (Munging) данными в Perl> 226 | 227 | by Dave Cross 228 | ISBN 1-930110-00-6 [1st edition 2001] 229 | http://www.manning.com/cross 230 | 231 | =item I 232 | 233 | by Steve Lidie and Nancy Walsh 234 | ISBN 978-1-56592-716-2 [1st edition January 2002] 235 | http://oreilly.com/catalog/9781565927162 236 | 237 | =item I 238 | 239 | =item I<Расширения и встраивания Perl> 240 | 241 | by Tim Jenness and Simon Cozens 242 | ISBN 1-930110-82-0 [1st edition August 2002] 243 | http://www.manning.com/jenness 244 | 245 | =item I 246 | 247 | =item I<Профессиональная отладка Perl> 248 | 249 | by Richard Foley with Andy Lester 250 | ISBN 1-59059-454-1 [1st edition July 2005] 251 | http://www.apress.com/9781590594544 252 | 253 | =back 254 | 255 | =head2 бесплатно (как пиво) книги 256 | 257 | Некоторые из этих книг доступны для бесплатной загрузки. 258 | 259 | I: http://hop.perl.plover.com/ 260 | 261 | =head2 Другие интересные, не Perl книги 262 | 263 | Вы могли заметить несколько знакомых Perl понятий в этой коллекции столбцов ACM от Jon Bentley. Сходство на звание крупнейших книжных Perl (которые пришли позже) не является полностью случайным: 264 | 265 | =over 4 266 | 267 | =item I 268 | 269 | =item I<Жемчуг программирования> 270 | 271 | by Jon Bentley 272 | ISBN 978-0-201-65788-3 [2 edition, October 1999] 273 | 274 | =item I 275 | 276 | by Jon Bentley 277 | ISBN 0-201-11889-0 [January 1988] 278 | 279 | =back 280 | 281 | =head2 Замечания по обновлениям 282 | 283 | Каждая версия Perl поставляется с документацией, актуальной на момент релиза. Это создает проблему для содержания таких книг, которые приведены в списке. Есть, вероятно, очень хорошие книги, изданные после этот список был включен в вашем Perl релиз, и вы можете проверить последней выпущенной версии на http://perldoc.perl.org/perlbook.html. 284 | 285 | Некоторые из книг мы перечислили появляются чуть ли не древнее в интернете масштаба, но мы включили эти книги, потому что они по-прежнему описывают текущую способ делать вещи. Не все в Perl меняется каждый день. 286 | Многие из начального уровня книги, тоже переходят основные функции и методы, которые актуальны и сегодня. Но в общем, мы стараемся ограничить этот список книг, изданных в последние пять лет. 287 | 288 | =head2 Получение перечисленных книг 289 | 290 | Если вашей Perl книги нет в списке, и вы думаете, она должна быть, дайте нам знать. 291 | 292 | =cut 293 | 294 | =head1 ПЕРЕВОДЧИКИ 295 | 296 | =over 297 | 298 | =item * Николай Мишин C<< >> 299 | 300 | =back 301 | -------------------------------------------------------------------------------- /lib/POD2/RU/perldoc.pod: -------------------------------------------------------------------------------- 1 | 2 | =encoding utf8 3 | 4 | =head1 NAME/НАИМЕНОВАНИЕ 5 | 6 | perldoc - Perl-документация в POD-формате. 7 | 8 | =head1 СИНТАКСИС 9 | 10 | perldoc [-h] [-D] [-t] [-u] [-m] [-l] [-F] 11 | [-i] [-V] [-T] [-r] 12 | [-d файл_назначения] 13 | [-o название_формата] 14 | [-M названиеклассаформата] 15 | [-w параметрформатирования:значение] 16 | [-n nroff-аналог] 17 | [-X] 18 | [-L код_языка] 19 | ИмяСтраницы|НазваниеМодуля|НазваниеПрограммы|URL 20 | 21 | Примеры: 22 | 23 | perldoc -f BuiltinFunction 24 | 25 | perldoc -L it -f ВстроеннаяФункция 26 | 27 | perldoc -q FAQ КлючевоеСлово 28 | 29 | perldoc -L ru -q FAQ КлючевоеСлово 30 | 31 | perldoc -v ПеременнаяPerl 32 | 33 | Подробная информация о параметрах командной строки ниже. 34 | 35 | =head1 ОПИСАНИЕ 36 | 37 | I позволяет получить часть документации в .pod формате, которая встроена в дистрибутив perl или Perl-скрипты и доступна с помощью C. (а также C для ОС HP-UX). В основном используется для получения документации по модулям Perl. 38 | 39 | На вашей системе тоже могут быть установлены руководства по этим модулям. В этом случае вы можете пользоваться командой man(1). 40 | 41 | Если вы ищете оглавление к библиотеке документаций модулей Perl, смотрите L. 42 | 43 | =head1 ПАРАМЕТРЫ 44 | 45 | =over 5 46 | 47 | =item B<-h> 48 | 49 | Выводит справочную информацию по использованию 50 | (Belp). 51 | 52 | =item B<-D> 53 | 54 | B<О>писывает поиск элемента B<п>одробнее. 55 | 56 | =item B<-t> 57 | 58 | Показывать документацию, используя текстовый конвертер (Bext), а не nroff. Возможно, это быстрей, но, вероятно, будет смотреться хуже. 59 | 60 | =item B<-u> 61 | 62 | Игнорировать POD-форматирование и отобразить исходный код (Bnformatted) 63 | 64 | =item B<-m> I<модуль> 65 | 66 | Показать содержимое модуля: код и не отформатированную POD-документацию. 67 | Это может быть полезно, если документация не достаточно объясняет работу функции и Вы хотите посмотреть непосредственно код; perldoc найдет файл для Вас и просто выведет содержимое. 68 | 69 | =item B<-l> 70 | 71 | Отобразить только (onBy), если название модуля найдено. 72 | 73 | =item B<-F> 74 | 75 | Рассматривает аргументы как имена файлов; поиск по каталогам производиться не будет. 76 | 77 | =item B<-f> I 78 | 79 | Опция B<-f> вместе с названием встроенной Perl-функции позволяет получить документацию по этой функции из L. 80 | 81 | Пример: 82 | 83 | perldoc -f sprintf 84 | 85 | 86 | =item B<-q> I 87 | 88 | Опция B<-q> задает регулярное выражение в качестве аргумента, которое позволяет найти вопрос (Buestion) в FAQ по Perl [1-9] и вывести записи, удовлетворяющие этому выражению. 89 | 90 | Пример: 91 | 92 | perldoc -q shuffle 93 | 94 | 95 | =item B<-v> I 96 | 97 | Ключ B<-v> с последующим названием Perl предопределенной переменной будет извлекать документацию этой переменной из L. 98 | 99 | Примеры: 100 | 101 | perldoc -v '$"' 102 | perldoc -v @+ 103 | perldoc -v DATA 104 | 105 | 106 | =item B<-T> 107 | 108 | Это указывает, что вывод нужен не для отправки на страницу, но вывод можно получить непосредственно на стандартный вывод (STDOUT). 109 | 110 | =item B<-d> I<файл-назначения> 111 | 112 | Этот параметр позволяет сохранить вывод в файл, не выводя на страницу или в STDOUT. Example: 113 | C 114 | 115 | =item B<-o> I<название-формата-вывода> 116 | 117 | Используйте этот параметр, если вы хотите, чтобы Perldoc попытался использовать класс POD-форматирования в качестве выходного формата. Например: 118 | C<-oman>. На самом деле, это обертка вокруг переключателя C<-M>; используйте C<-oI<название-формата>> для загрузки класса, имя класса формируется добавлением названия формата в конец имени (без учета регистра). 119 | 120 | Например, C<-oLaTeX> пытается использовать следующие классы: 121 | Pod::Perldoc::ToLaTeX Pod::Perldoc::Tolatex Pod::Perldoc::ToLatex 122 | Pod::Perldoc::ToLATEX Pod::Simple::LaTeX Pod::Simple::latex 123 | Pod::Simple::Latex Pod::Simple::LATEX Pod::LaTeX Pod::latex Pod::Latex 124 | Pod::LATEX. 125 | 126 | =item B<-M> I<название-модуля> 127 | 128 | С помощью этого параметра можно указать модуль, с помощью которого Вы хотите форматировать POD-документацию. Класс должен содержать метод C. 129 | Например: C. 130 | 131 | Вы можете указать несколько классов, разделив их запятыми или точкой с запятой, например: C<-MTk::SuperPod;Tk::Pod>. 132 | 133 | =item B<-w> I<параметр:значение> или B<-w> I<параметр> I