├── .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 | [](https://travis-ci.org/mishin/POD-to-RU)
2 | [](https://coveralls.io/r/mishin/POD-to-RU?branch=master)
3 | [](http://cpants.charsbar.org/dist/overview/POD2-RU)
4 | [](https://github.com/mishin/POD-to-RU/issues)
5 | [](https://metacpan.org/release/POD2-RU)
6 | [](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
134 |
135 | Этот параметр позволяет вызвать форматирование с B<п>араметрами. Например,
136 | C<-w textsize:15> вызовет
137 | C<< $formatter->textsize(15) >> до использования объекта форматирования. Для корректного выполнения, необходимо чтобы класс форматирования содержал такой метод, как переданный параметр, и значение было верным.
138 | (Так если C ожидает целочисленное значение и передана строка C<-w textsize:big>, то будут проблемы).
139 |
140 | Вы можете использовать C<-w название-параметра> (без значения) в качестве короткой записи C<-w название-параметра:I>. Предположительно, это удобно в переключателях да/нет таких, как: C<-w номер_страницы>.
141 |
142 | Можете использовать "=" вместо ":", т. е. C<-w textsize=15>. Возможно, это намного удобней (или наоборот), все зависит от ваших предпочтений.
143 |
144 | =item B<-X>
145 |
146 | Используйте индекс, если он присутствует. Если присутствует параметр B<-X>, то будет использован индекс для поиска записи, чье имя совпадает с именем, полученным из командной строки в файле C<$config{archlib}/pod.idx>. Файл F должен содержать подходящие имена файлов, по одному имени на строке.
147 |
148 | =item B<-L> I<код_языка>
149 |
150 | Этот параметр позволяет использовать перевод документации на том языке, которому соответствует I<код_языка>. Если Cкод_языка> не существует (или не установлен на вашей системе), то параметр игнорируется.
151 | Все существующие переводы доступны в пространстве имен C. Смотрите L (или L, или L, или L) в порядке появления и интеграции новой локализации C документации в L.
152 |
153 | =item B<НазваниеСтраницы|НазваниеМодуля|НазваниеПрограммы|URL>
154 |
155 | Название того, чего хотите найти. Модули вида C могут быть определены как C или C. Также вы можете задать имя страницы документации, например С. Для ссылок (URLs), HTTP и
156 | HTTPS являются единственным поддерживаемым видом.
157 |
158 | Для простых имен, как 'foo', когда нормальный поиск не удался, также пытайтесь найти соответствующую страницу поиска с префиксом "perl" .
159 | Таким образом, "perldoc intro" достаточно, чтобы найти/сделать "perlintro.pod".
160 |
161 | =item B<-n> I<форматирование>
162 |
163 | Укажите замены для groff
164 |
165 | =item B<-r>
166 |
167 | Рекурсивный поиск.
168 |
169 | =item B<-i>
170 |
171 | Игнорировать регистр.
172 |
173 | =item B<-V>
174 |
175 | Отображает версию Perldoc с которой вы работаете.
176 |
177 | =back
178 |
179 | =head1 БЕЗОПАСНОСТЬ
180 |
181 | Т. к. B не запускается в tainted-режиме, существуют проблемы с безопасностью. Когда программа запускается из-под суперпользователя, она пытается удалить привилегии и сменить настоящий ID на неопределенный или на неопределенный аккаунт, если не получилось, то на -2. Если смена прав не удалась, то программа не запускается.
182 |
183 | =head1 ОКРУЖЕНИЕ
184 |
185 | Все параметры из переменной окружения C будут использованы перед аргументами командной строки.
186 |
187 | Полезные значения для C включают C<-oman>, C<-otext>, C<-otk>, C<-ortf>,
188 | C<-oxml> и так далее, в зависимости от имеющихся у вас модулей; или явно укажите класс определяющий форматирование с помощью C<-MPod::Perldoc::ToMan>
189 | или подобного.
190 |
191 | C также ищет в директориях определённых в переменных окружения C (или C, если C не определено) и C.
192 | (Последнее таково, что встроенная POD-документация для исполняемых файлов, таких как сам C, доступна.)
193 |
194 | В каталогах, где есть либо C либо C, C
195 | добавляет C<.> и C первым его пути поиска, и до тех пор, пока суперпользователь не добавит C тоже. Это очень полезно, если вы работаете внутри каталог сборки и хотите прочитать документацию, даже если у вас есть версия модулем, установленным ранее.
196 |
197 | Cбудет использовать пейджер, в порядке предпочтения, определённый в C, C, или C перед тем как попытается найти собственный. (C не используется, если C указывает отображать простой текст или не форматированный pod.)
198 |
199 | Одно из полезных значений для C - это C.
200 |
201 | При установке в PERLDOCDEBUG положительного целого числа perldoc выводит более подробно, чем это делает ключ C<-D>. Большее значение даёт больший вывод.
202 |
203 |
204 | =head1 ИЗМЕНЕНИЯ
205 |
206 | До 3.14_05, переключатель B<-v> использовался для получения подробных сообщений из B операции, которая теперь включен по B<-D>.
207 |
208 | =head1 СМОТРИТЕ ТАКЖЕ
209 |
210 | L, L
211 |
212 | =head1 АВТОР
213 |
214 | Текущий сопровождающий (maintainer): Mark Allen C<< >>
215 |
216 | Прошлыми участниками являются:
217 | brian d foy C<< >>
218 | Adriano R. Ferreira C<< >>,
219 | Sean M. Burke C<< >>,
220 | Kenneth Albanowski C<< >>,
221 | Andy Dougherty C<< >>,
222 | и много других.
223 |
224 | =cut
225 |
226 | =head1 ПЕРЕВОДЧИКИ
227 |
228 | =over
229 |
230 | =item * Николай Мишин C<< >>
231 |
232 | =item * Анатолий Шарифулин C<< >>
233 |
234 | =item * Алексей Суриков (Language) C<< >>
235 |
236 | =item * Михаил Любимов (Language) C<< >>
237 |
238 | =item * Дмитрий Константинов (Language) C<< >>
239 |
240 | =item * Евгений Баранов (Language) C<< >>
241 |
242 | =back
243 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perlunitut.pod:
--------------------------------------------------------------------------------
1 | =encoding UTF-8
2 |
3 | =head1 NAME/НАИМЕНОВАНИЕ
4 |
5 | perlunitut - Учебник по Юникоду в Perl
6 |
7 | =head1 ОПИСАНИЕ
8 |
9 | Дни простой обработки строк закончились. Установлено, что
10 | современные программы должны быть способны общаться смешанными акцентированными буквами и
11 | такими вещами, как символы евро. Это означает, что программистам нужны новые привычки.
12 | Легко программировать Юникодо-совместимое программное обеспечение, но для этого требуется дисциплина, чтобы делать
13 | это правильно.
14 |
15 | Существует много знаний о наборах символов и кодировках текста. Вероятно,
16 | лучше всего провести целый день для их изучения, но основы могут быть изучены за минуты.
17 |
18 | Это вообще-то не самые основы. Предполагается, что вы уже
19 | знаете разницу между байтом и символом и понимаете (и принимаете!),
20 | что существует много различных наборов символов и кодировок и, что ваша
21 | Программа должна четко знать о них. Рекомендуется для чтения
22 | L<Абсолютный Минимум, который Каждый Разработчик Программного Обеспечения Обязательно Должен Знать о Unicode и Наборах Символов|http://local.joelonsoftware.com/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D0%B9_%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%9A%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9_%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%9E%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%97%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_Unicode_%D0%B8_%D0%9D%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%85_%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2>
23 | Джоэла Спольски , оригинал на английском
24 | L.
25 |
26 | Этот учебник говорит о довольно абсолютных терминах и предоставляет лишь ограниченное представление
27 | о богатстве функций обработки символов, которые Perl может предложить. Для
28 | большинства проектов этой информации, вероятно, будет достаточно.
29 |
30 | =head2 Определения
31 |
32 | Важно, чтобы мы установили сначала несколько вещей. Это самая важная
33 | часть этого учебника. Эта точка зрения может конфликтовать с другой информацией, что вы
34 | возможно, нашли в Интернете, но это главным образом потому, что многие источники неправильны.
35 |
36 | Возможно, вам придется перечитать этот весь раздел несколько раз...
37 |
38 | =head3 Юникод
39 |
40 | B<Юникод>— это набор символов с дополнительным окном для всех символов. Порядковый номер
41 | символа называется B<кодовой точкой>. (Но на практике,
42 | стирается различие между кодовой точкой и символом, так что термины часто
43 | используются как синонимы.)
44 |
45 | Есть многие, многие кодовые точки, но компьютеры работают с байтами и байт имеет
46 | окно только для только 256 значений. Юникод имеет намного больше символов, чем это,
47 | так что вам нужен метод, чтобы сделать их доступными.
48 |
49 | Юникод кодируется с использованием нескольких конкурирующих кодировок, в которых UTF-8 является
50 | наиболее часто используемой. В кодировке Юникод несколько последующих байтов могут использоваться для
51 | хранения одной кодовой точки или просто: символа.
52 |
53 | =head3 UTF-8
54 |
55 | B это Юникодная кодировка. Многие люди думают, что Юникод и UTF-8
56 | - это одно и то же, но это не так. Есть много Юникодных кодировок, но большая часть
57 | мира стандартизирована под UTF-8.
58 |
59 | UTF-8 рассматривает первые 128 кодовых точек, 0..127, так же, как ASCII. Она принимает
60 | только один байт на символ. Все остальные символы кодируются как два или более (до шести) байт,
61 | используя сложную схему. К счастью Perl обрабатывает это для
62 | нас, поэтому мы не должны беспокоиться об этом.
63 |
64 | =head3 Текстовые строки (строки символов)
65 |
66 | B<Текстовые строки>, или B<символьные строки> изготовлены из символов. Байт
67 | здесь не имеет значения, а только кодировка. Каждый символ это просто символ.
68 |
69 | С текстовой строкой вы можете делать такие вещи:
70 |
71 | $text =~ s/foo/bar/;
72 | if ($string =~ /^\d+$/) { ... }
73 | $text = ucfirst $text;
74 | my $character_count = length $text;
75 |
76 | Значение соответствующего кода символа (C, C) связано с Юникодной кодовой точкой.
77 |
78 | =head3 Двоичные строки (строки байтов)
79 |
80 | B<Двоичные строки>, или B<строки байтов> изготовлены из байтов. Здесь вы не имеете
81 | символов, просто байты. Все коммуникации с внешним миром (что-либо
82 | за пределами вашего текущего процесса Perl) делаются в двоичном виде.
83 |
84 | С двоичной строкой вы могли бы сделать такие вещи, как:
85 |
86 | my (@length_content) = unpack "(V/a)*", $binary;
87 | $binary =~ s/\x00\x0F/\xFF\xF0/; # для смелых :)
88 | print {$fh} $binary;
89 | my $byte_count = length $binary;
90 |
91 | =head3 Кодирование (Encoding)
92 |
93 | B<Кодирование> (как глагол) является преобразованием от I<текста> к I<двоичным данным>. Для кодирования,
94 | вы должны указать целевую кодировку, например C или C.
95 | Некоторые кодировки такие, как C ("латинский") диапазон, не поддерживают полный
96 | стандарт Юникода; символы, которые не могут быть представлены теряются во время
97 | преобразования.
98 |
99 | =head3 Декодирование (Decoding)
100 |
101 | B<Декодирование> является преобразованием от I<двоичного формата> к I<тексту>.
102 | Чтобы декодировать, вы должны знать, какая кодировка используется на этапе кодирования.
103 | И самое главное это должно быть что-то что поддается декодированию.
104 | Не будет большого смысла для декодирования изображения в формате PNG в текстовую строку.
105 |
106 | =head3 Внутренний формат
107 |
108 | Perl имеет B<внутренний формат> (B), кодирования, который он использует для кодирования текстовых строк
109 | так, что он их может хранить в памяти. Все текстовые строки находятся в этом внутреннем формате.
110 | В самом деле текстовые строки никогда не бывают в любом другом формате!
111 |
112 | Вы не должны беспокоиться о том, что это за формат, потому что преобразование
113 | автоматически делается, когда вы декодируете или кодируете.
114 |
115 | =head2 Ваш новый инструментарий
116 |
117 | Добавьте в ваш стандартный заголовок следующую строку:
118 |
119 | use Encode qw(encode decode);
120 |
121 | Или, если вы ленивы, просто:
122 |
123 | use Encode;
124 |
125 | =head2 Поток ввода-вывода (I/O flow) (фактические 5 минутный учебник)
126 |
127 | Типичный поток ввода-вывода программы состоит из:
128 |
129 | 1. Получение и декодирование (Receive and decode)
130 | 2. Процесс (Process)
131 | 3. Кодирование и вывод (Encode and output)
132 |
133 | Если ваши входящие данные являются двоичными, то они и должны оставаться двоичными, вы не должны декодировать
134 | их в текстовую строку, конечно. Но, во всех остальных случаях, вы должны их декодировать.
135 |
136 | Декодирование не может произойти надежно, если вы не знаете как закодированы данные. Если
137 | вы можете выбрать, то хорошей идеей будет сделать стандартом UTF-8.
138 |
139 | my $foo = decode('UTF-8', get 'http://example.com/');
140 | my $bar = decode('ISO-8859-1', readline STDIN);
141 | my $xyzzy = decode('Windows-1251', $cgi->param('foo'));
142 |
143 | Обработка происходит также, как вы знали раньше. Единственное различие заключается в том, что сейчас
144 | вы используете символы вместо байт. Это очень полезно, когда вы используете такие функции, как
145 | C, или C.
146 |
147 | Важно понимать, что у нас нет байт в текстовой строке. Конечно
148 | Perl имеет свою внутреннюю кодировку для хранения строк в памяти, но нужно игнорировать это.
149 | Если вам нужно сделать что-нибудь байтами, то, вероятно, лучше сделать эту часть это сделать на
150 | шаге 3, только после того, как вы закодируете строки. Тогда вы знаете
151 | точно сколько байт будет в строке назначения.
152 |
153 | Синтаксис для кодирования строк текста в двоичные строки также прост, как и для декодирования:
154 |
155 | $body = encode('UTF-8', $body);
156 |
157 | Если вам необходимо знать длину строки в байтах, теперь пришло идеальное время
158 | для этого. Потому что C<$body> теперь строка байтов и C сообщит
159 | число байт, а не число знаков. Число символов
160 | больше не известно, потому что символы существуют только в текстовых строк.
161 |
162 | my $byte_count = length $body;
163 |
164 | И, если вы используете протокол, который поддерживает способ дать получателем информацию,
165 | какие кодировки символов вы использовали, пожалуйста, помогите принимающей стороне, используя эту возможность!
166 | Например, электронная почта (E-mail) и HTTP поддерживают MIME-заголовки, поэтому вы можете использовать
167 | заголовок C. Они также могут иметь C для обозначения
168 | числа I<байт>, так что это всегда хорошая идея указать его, если это число известно.
169 |
170 | "Content-Type: text/plain; charset=UTF-8",
171 | "Content-Length: $byte_count"
172 |
173 | =head1 РЕЗЮМЕ
174 |
175 | Декодируйте все, что вы получаете, кодируйте все, что вы посылаете. (Если это текстовые
176 | данные.)
177 |
178 | =head1 В и О (или ВИО) Вопросы и Ответы. (Q and A (or FAQ))
179 |
180 | После прочтения этого документа, вы должны прочитать и L тоже.
181 |
182 | =head1 БЛАГОДАРНОСТИ
183 |
184 | Спасибо Джохану Вромансу (Johan Vromans) из Squirrel Consultancy. Его замечательная речь про UTF-8 во время
185 | встречи Амстердам Perl Монгерс заинтересовала меня и позволила выяснить,
186 | как использовать кодировки символов в Perl способами, которые не ломаются легко.
187 |
188 | Спасибо Джерарду Гуссену (Gerard Goossen) из TTY. Его презентация "UTF-8 в дикой природе" ("UTF-8 in the wild")(Голландский
189 | Perl-воркшоп 2006) вдохновила меня опубликовать мои мысли и написать этот учебник.
190 |
191 | Спасибо людям, которые просили о такого рода вещах в нескольких Perl IRC
192 | каналах и постоянно напоминают мне о том, что требуется более простое объяснение.
193 |
194 | Спасибо людям, которые рассмотрели этот документ для меня прежде, чем он дошел до общественности.
195 | Это: Бенджамин Смит (Benjamin Smith), Ян-Питер Корнет (Jan-Pieter Cornet), Джохан Вроманс (Johan Vromans),
196 | Лукас Май (Lukas Mai), Натан Грей (Nathan Gray).
197 |
198 | =head1 АВТОР
199 |
200 | Юерд Ваалбоер (Juerd Waalboer) <#####@juerd.nl>
201 |
202 | =head1 СМОТРИТЕ ЕЩЕ
203 |
204 | L, L, L, L
205 |
206 | =head1 ПЕРЕВОДЧИКИ
207 |
208 | =over
209 |
210 | =item * Николай Мишин C<< >>
211 |
212 | =back
213 |
--------------------------------------------------------------------------------
/lib/POD2/RU.pm:
--------------------------------------------------------------------------------
1 | package POD2::RU;
2 |
3 | # ABSTRACT: Perl Документация по-русски
4 | use warnings;
5 | use strict;
6 |
7 | use utf8;
8 | use base 'POD2::Base';
9 |
10 | our $VERSION = '1.84.0';
11 |
12 | # Versions list
13 | sub pod_info {
14 | 'a2p.pod' => '5.18.0',
15 | 'perlbook.pod' => '5.18.0',
16 | 'perlcheat.pod' => '5.18.0',
17 | 'perldebtut.pod' => '5.18.0',
18 | 'perldoc.pod' => '5.18.0',
19 | 'perlguts.pod' => '5.18.0',
20 | 'perlhacktut.pod' => '5.18.0',
21 | 'perlintro.pod' => '5.18.0',
22 | 'perlmod.pod' => '5.18.0',
23 | 'perlnewmod.pod' => '5.18.0',
24 | 'perlootut.pod' => '5.18.0',
25 | 'perlopentut.pod' => '5.18.0',
26 | 'perlpacktut.pod' => '5.18.0',
27 | 'perl.pod' => '5.18.0',
28 | 'perlpod.pod' => '5.18.0',
29 | 'perlpodspec.pod' => '5.18.0',
30 | 'perlpodstyle.pod' => '5.18.0',
31 | 'perlpragma.pod' => '5.18.0',
32 | 'perlreapi.pod' => '5.18.0',
33 | 'perlrebackslash.pod' => '5.18.0',
34 | 'perlrecharclass.pod' => '5.18.0',
35 | 'perlreftut.pod' => '5.18.0',
36 | 'perlreguts.pod' => '5.18.0',
37 | 'perlre.pod' => '5.18.0',
38 | 'perlrequick.pod' => '5.18.0',
39 | 'perlreref.pod' => '5.18.0',
40 | 'perlretut.pod' => '5.18.0',
41 | 'perlrun.pod' => '5.18.0',
42 | 'perlsecret.pod' => '5.18.0',
43 | 'perlstyle.pod' => '5.18.0',
44 | 'perlthrtut.pod' => '5.18.0',
45 | 'perlunicode.pod' => '5.18.0',
46 | 'perluniintro.pod' => '5.18.0',
47 | 'perlunitut.pod' => '5.18.0',
48 | ;
49 | }
50 |
51 | # String for perldoc with -L switch
52 | sub search_perlfunc_re {
53 | return 'Список функций Perl';
54 | }
55 |
56 | 1;
57 | __END__
58 |
59 | =encoding utf-8
60 |
61 | =for stopwords
62 |
63 | =head1 NAME
64 |
65 | POD2::RU - Документация Perl по-русски
66 |
67 | =for HTML
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | =head1 SYNOPSIS
76 |
77 | use POD2::RU;
78 | print_pods();
79 | print_pod('perlre', 'perlootut');
80 |
81 | =head1 DESCRIPTION
82 |
83 | POD2::RU - проект перевода Perl-документации на русский язык.
84 |
85 | =head1 REPOSITORY
86 |
87 | Домашняя страница проекта ─ L.
88 |
89 | =head1 USAGE
90 |
91 | Примеры использования
92 |
93 | perldoc POD2::RU::perlretut
94 |
95 | perl -MPOD2::RU -e 'print_pods'
96 | perl -MPOD2::RU -e 'print_pod <название_pod1> [<название_pod2> ...]'
97 |
98 | use POD2::RU;
99 | print_pods();
100 | print_pod('pod_foo', 'pod_baz');
101 |
102 | После установки пакета, вы можете использовать следующую команду, чтобы получить документацию:
103 |
104 | perldoc POD2::RU::<название_pod>
105 |
106 | Начиная с Pod::Perldoc версии 3.14 можно использовать следующий синтаксис:
107 |
108 | perldoc -L RU <название_pod>
109 | perldoc -L RU -f <функция>
110 | perldoc -L RU -q <регулярное выражение для FAQ>
111 |
112 | Модификатор C<-L> определяет код языка перевода. Если пакет C<< POD2::<код_языка> >> не существует, то модификатор игнорируется.
113 |
114 | Для ленивых можно добавить псевдоним (alias):
115 |
116 | perldoc-ru="perldoc -L RU"
117 |
118 | для того, чтобы не писать модификатор C<-L> каждый раз:
119 |
120 | perldoc-ru perlre
121 | perldoc-ru -f map
122 |
123 | Начиная с F версии 3.15 вы можете использовать переменную среды PERLDOC_POD2. Если эта переменная установлена в '1', то perldoc осуществляет поиск pod документации на языке, указанном в переменной LC_ALL, LANG или LC_LANG. Или же вы можете установить значение "ru", означающее вывод документации на русском языке. Например,
124 |
125 | export PERLDOC_POD2="ru"
126 | perldoc perl
127 |
128 | =head1 API
129 |
130 | Пакет экспортирует следующие функции:
131 |
132 | =over 4
133 |
134 | =item * C
135 |
136 | Была добавлена для совместимости с C Perl 5.10.1.
137 | L использует ее для возврата имени пакета перевода.
138 |
139 | =item * C
140 |
141 | Была добавлена для совместимости с C Perl 5.10.1.
142 | L использует ее для определения, где искать переведенные файлы.
143 |
144 | =item * C
145 |
146 | Выводит все переведенные части и оригинальную версию Perl.
147 |
148 | =item * C
149 |
150 | Выводит на экран оригинальнуя версию Perl для всех частей, переданых в качестве аргументов.
151 |
152 | =item * C
153 |
154 | C<< perldoc -f function >> использует возвращаемое значение этой функции (как regexp), чтобы пропустить введение и найти список функций.
155 |
156 | =item * C
157 |
158 | C<> - Выдает хэш с текущими pod файлами в данном дистрибутиве
159 |
160 | =back
161 |
162 | =head1 AUTHOR
163 |
164 | Nikolay Mishin E mi@ya.ru E
165 |
166 | =head1 CONTRIBUTORS
167 |
168 | =over 1
169 |
170 | =item * Анатолий Шарифулин (L)
171 |
172 | =item * Андрей Шитов (L)
173 |
174 | =item * Алексей Суриков (L)
175 |
176 | =item * Михаил Любимов (L)
177 |
178 | =item * Дмитрий Константинов (L )
179 |
180 | =item * Евгений Баранов (L)
181 |
182 | =item * Антон Никишаев (L)
183 |
184 | =item * Динар Жамалиев (L)
185 |
186 | =item * Валерий Кравчук (L)
187 |
188 | =item * Enrique Nell (L)
189 |
190 | =item * Yusuke Kawasaki (L)
191 |
192 | =item * Вячеслав Тихановский (L)
193 |
194 | =item * Zoffix Znet (L)
195 |
196 | =item * Дмитрий Анисимов
197 |
198 | =item * Андрей Варлашкин
199 |
200 | =item * Кирилл Флоренский
201 |
202 | =item * Андрей Асякин (L)
203 |
204 | =back
205 |
206 | =head1 COPYRIGHT
207 |
208 | Copyright 2015- Nikolay Mishin
209 |
210 | =head1 LICENSE
211 |
212 | This library is free software; you can redistribute it and/or modify
213 | it under the same terms as Perl itself.
214 |
215 | =head1 REPOSITORY
216 |
217 | L
218 |
219 | =head1 SUPPORT
220 |
221 | This module is managed in an open L . Feel free to fork and
223 | contribute, or to clone L and send
224 | patches!
225 |
226 | Found a bug? Please L a report!
227 |
228 | =head1 SEE ALSO
229 |
230 | L, L, L, L, L.
231 |
232 | =head1 DONATIONS
233 |
234 | Проект перевода документации Perl требует постоянных усилий, что доступно только для сильных духом и альтруистов.
235 | Авторы не просят, но ни не отвергают помощь в виде денег, книг, сыра и продуктов из свинины (можно хамон;) ), или даже поездки в Полинезию для снижения утомления и сохранения боевого духа команды. Мы приглашаем всех. (стащено и переведено отсюда L)
236 |
237 | =head1 THANKS
238 |
239 | Авторы хотели бы выразить свою благодарность команде разработчиков OmegaT, инструмента, который используется для перевода.
240 |
241 | Проект OmegaT: L
242 |
243 | Также хотелось бы выразить благодарность автору перевода perl документации на испанский язык
244 | POD2::ES Enrique Nell за его в помощь в написании скриптов.
245 |
246 | Проект POD2::ES: L
247 |
248 | Благодарность Yusuke Kawasaki за совет разместить весь проект на github
249 | на вопрос о японской документации он ответил:
250 | They (JPRP people) uses sourceforge and its CVS.
251 |
252 | L
253 |
254 | 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.
255 |
256 | Спасибо Яндекс Спеллеру L , L за то, что через него можно прогнать русский
257 | текст и удобно исправить ошибки!
258 |
259 | Спасибо сайту L - он выручал даже тогда, когда был бессилен Яндекс Спеллер.
260 |
261 | Спасибо переводчику L за хороший предварительный перевод,
262 | но помучаться все равно придется, получается пока сыро;)
263 |
264 | Спасибо L за проведение конференции YAPC Russia 2015
265 | и лично Павлу Щербинину.
266 |
267 | =cut
268 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perlstyle.pod:
--------------------------------------------------------------------------------
1 |
2 | =encoding utf8
3 |
4 | =head1 NAME/НАИМЕНОВАНИЕ
5 |
6 | perlstyle - Стиль написания Perl-кода
7 |
8 | =head1 ОПИСАНИЕ
9 |
10 | Безусловно, у каждого программиста есть свои собственные предпочтения относительно форматирования кода. Однако существуют некоторые общие рекомендации, которые сделают ваши программы читабельными, понятными и их поддержка не составит особого труда.
11 |
12 | Самое важное - всегда запускать программы с флагом B<-w>. В случае необходимости для определённых участков кода этот режим можно явно отключить, используя C или переменную C<$^W>. Также следует всегда работать с C, кроме случаев, когда вы точно знаете, почему эта прагма вам не подходит. Использование прагмы C и даже C может также оказаться полезным.
13 |
14 | Есть только один пункт, который Ларри рекомендует строго выполнять, с целью сохранения эстетики форматирования кода - закрывающая фигурная скобка многострочного блока должна находиться на одной вертикали с ключевым словом, начинающим конструкцию.
15 | Кроме того, он имеет ряд других предпочтений, но не на настолько строгих:
16 |
17 | =over 4
18 |
19 | =item *
20 |
21 | 4х символьный отступ.
22 |
23 | =item *
24 |
25 | Открывающая фигурная скобка находится на той же строке, что и ключевое слово (если это возможно), иначе на одной вертикали с ним.
26 |
27 | =item *
28 |
29 | Пробел перед открывающей фигурной скобкой многострочного блока.
30 |
31 | =item *
32 |
33 | Однострочный блок может быть записан в одну строку, включая фигурные скобки.
34 |
35 | =item *
36 |
37 | Нет пробелов перед точкой с запятой.
38 |
39 | =item *
40 |
41 | В коротких однострочных блоках точка с запятой опускается.
42 |
43 | =item *
44 |
45 | Пробелы вокруг большинства операторов.
46 |
47 | =item *
48 |
49 | Пробелы вокруг "сложных" подпрограмм (внутри скобок)
50 |
51 | =item *
52 |
53 | Пустые строки между частями кода, реализующие разную логику.
54 |
55 | =item *
56 |
57 | "Не обнимать" else-условия
58 |
59 | =item *
60 |
61 | Между именем функции и открывающей круглой скобкой нет пробелов.
62 |
63 | =item *
64 |
65 | Пробел после каждой запятой.
66 |
67 | =item *
68 |
69 | Разбивать длинные строки, оставляя на конце какой-либо оператор (кроме C и C).
70 |
71 | =item *
72 |
73 | Пробел после последней сбалансированной круглой скобки в текущей строке.
74 |
75 | =item *
76 |
77 | Выравнивать соответствующие элементы по вертикали.
78 |
79 | =item *
80 |
81 | Опускать излишнюю пунктуацию до тех пор, пока код остается читабельным.
82 |
83 | =back
84 |
85 | У Ларри есть причины для каждого из этих пунктов, но он не имеет претензий, если вы думаете по-другому.
86 |
87 | Вот еще о чем стоит подумать:
88 |
89 | =over 4
90 |
91 | =item *
92 |
93 | То, что вы I<МОЖЕТЕ> сделать что-то определённым образом вовсе не означает, что вы I<ОБЯЗАНЫ> это делать так. Perl спроектирован таким образом, чтобы дать вам возможность сделать любую вещь несколькими способами, и так, чтобы вы смогли выбрать наиболее читабельный вариант. Например:
94 |
95 | open(FOO,$foo) || die "Can't open $foo: $!";
96 |
97 | лучше, чем
98 |
99 | die "Can't open $foo: $!" unless open(FOO,$foo);
100 |
101 | потому, что второй способ скрывает суть выражения. С другой стороны
102 |
103 | print "Starting analysis\n" if $verbose;
104 |
105 | лучше, чем
106 |
107 | $verbose && print "Starting analysis\n";
108 |
109 | потому, что суть не в том, чтобы пользователь набрал B<-v>.
110 |
111 | Аналогично, если оператор имеет значения по умолчанию, то вы не обязаны использовать их. Значения по умолчанию предназначены для ленивых системных программистов, которые пишут однострочные программы. Если вы хотите, чтобы ваша программа была читабельна, задумайтесь об использование аргументов.
112 |
113 | Продолжая выше сказанное, если вы I<МОЖЕТЕ> опустить круглые скобки в разных местах, то это не означает, что вы должны делать так:
114 |
115 | return print reverse sort num values %array;
116 | return print(reverse(sort num (values(%array))));
117 |
118 | Если сомневаетесь - используйте скобки. В крайнем случае, пусть какой-нибудь дроздик попрыгает на клавише % в редакторе B.
119 |
120 | Даже если вы не сомневаетесь, подумайте о нервах того, кто будет поддерживать код после вас и, возможно, будет расставлять скобки не в тех местах.
121 |
122 | =item *
123 |
124 | Не идите на поводу у глупостей, искажая выход из цикла в начале или в конце. В Perl есть оператор С, так вы можете выйти из цикла в середине. Только "вытяните" его, чтобы выход стал заметным:
125 |
126 | LINE:
127 | for (;;) {
128 | statements;
129 | last LINE if $foo;
130 | next LINE if /^#/;
131 | statements;
132 | }
133 |
134 | =item *
135 |
136 | Не бойтесь использовать метки для циклов -- они предназначены для увеличения читабельности так же, как и для того, чтобы совершать прерывания многоуровневого цикла, как в предыдущем примере.
137 |
138 | =item *
139 |
140 | Избегайте использование C (или C) или `обратные_кавычки` в void-контексте, т. к. вы пропустите значения, которые они возвращают. Все эти функции возвращают значения, так используйте их. В противном случае, используйте цикл C или функцию C соответсвенно.
141 |
142 | =item *
143 |
144 | Для переносимости, когда вы используете особенности, которые не могут быть реализованы на каждой машине, выполняйте конструкцию в блоке eval. Если вам известен номер версии или патча, в котором данная особенность была реализована, то используйте переменную C<$]> (C<$PERL_VERSION> из модуля C), чтобы убедиться, что она там есть. Для того, чтобы узнать значения, определенные программой C во время установки Perl, используйте модуль C.
145 |
146 | =item *
147 |
148 | Выбирайте осмысленные названия для идентификаторов. Если вы не можете вспомнить, что обозначает данное название, у вас проблемы с выбором имен.
149 |
150 | =item *
151 |
152 | Короткие название для идентификаторов типа C<$gotit> являются понятными. Для длинных названий в качестве разделителя слов используйте символ подчеркивания. Например, C<$var_names_like_this> легче прочитать, чем C<$VarNamesLikeThis>, особенно тем, для которых английский -- не родной язык. Так же это простое правило распространяется на C.
153 |
154 | Название пакетов и модулей -- исключение из этого правила. Так сложилось, что в Perl названия в нижнем регистре используются для прагм (например, C или
155 | C). Остальные названия модулей должны начинаться с прописной буквы и использовать смешанный регистр букв, возможно, без подчеркиваний из-за того, что названия модулей используются в качестве названий файлов, которые должны укладываться в несколько байт.
156 |
157 | =item *
158 |
159 | Вы можете найти полезным использование регистра букв для отражения области видимости или природы переменной. Например:
160 |
161 | $ALL_CAPS_HERE константа (возможен конфликт с зарезервированными переменными!)
162 | $Some_Caps_Here глобальная или статическая переменная пакета
163 | $no_caps_here переменная, определенная через my() или local()
164 |
165 | Имена функций и методов лучше смотрятся в нижнем регистре.
166 | Например, C<$obj-Eas_string()>.
167 |
168 | Вы можете использовать подчеркивание в начале имени для обозначения того, что переменная или функция не должна быть использована вне пакета, в котором она определена.
169 |
170 | =item *
171 |
172 | Если вы написали, действительно, сложное регулярное выражение, то используйте модификатор C и расставьте пробелов в выражение, так будет лучше.
173 | Не используйте слешы в качестве разделителей, если ваше регулярное выражение содержит слешы (/) или бекслешы (\).
174 |
175 | =item *
176 |
177 | Используйте новые C и C операторы, чтобы избежать заключения в круглые скобки нескольких списковых операторов и уменьшить использование пунктуационных операторов типа C<&&> и C<||>. Вызывайте ваши подпрограммы так, как будто они были функциями или списковыми операторами, для избежания лишних амперсандов и скобок.
178 |
179 | =item *
180 |
181 | Используйте встроенные документы ("here" documents) вместо неоднократных вызовов C.
182 |
183 | =item *
184 |
185 | Выравнивайте похожие элементы по вертикали, особенно если они настолько длинные, чтобы поместиться на одну строку.
186 |
187 | $IDX = $ST_MTIME;
188 | $IDX = $ST_ATIME if $opt_u;
189 | $IDX = $ST_CTIME if $opt_c;
190 | $IDX = $ST_SIZE if $opt_s;
191 |
192 | mkdir $tmpdir, 0700 or die "can't mkdir $tmpdir: $!";
193 | chdir($tmpdir) or die "can't chdir $tmpdir: $!";
194 | mkdir 'tmp', 0777 or die "can't mkdir $tmpdir/tmp: $!";
195 |
196 | =item *
197 |
198 | Всегда проверяйте возвращаемые коды при системных вызовах. В C должны писаться нормальные сообщения об ошибках, включая название программы, в которой произошла ошибка, какой системный вызов привел к ошибке, и (ОЧЕНЬ ВАЖНО) стандартное системное описание ошибки. Вот простой, но достаточный пример:
199 |
200 | opendir(D, $dir) or die "can't opendir $dir: $!";
201 |
202 | =item *
203 |
204 | Выравнивайте части транслитерации, когда это имеет смысл:
205 |
206 | tr [abc]
207 | [xyz];
208 |
209 | =item *
210 |
211 | Подумайте о повторном использование кода. Зачем тратить время на написание одноразовых программ, когда вы можете сделать что-нибудь для того, чтобы использовать их снова? Подумайте, как можно обобщить ваш код, как написать модуль или класс, как сделать код "чище", используя C и C (или B<-w>). Не предложить ли вам ваш код кому-нибудь другому, не изменить ли вам свои взгляды на целый мир Подумайте... стоп, хватит.
212 |
213 | =item *
214 |
215 | Попытайтесь документировать свой код, используйте POD-форматирование. Список предполагаемых соглашений:
216 |
217 | =over 4
218 |
219 | =item *
220 |
221 | Используйте CE> для названия функций, переменных и модулей, а также других частей кода (например, файловых дескрипторов или специфичных значений). Считается, что названия функций являются более читабельными, если после имени следуют круглые скобки, например, C.
222 |
223 | =item *
224 |
225 | Используйте CE> для названия команд, например, Bили B.
226 |
227 | =item *
228 |
229 | Используйте CE> или CE> для названия файлов. CE> должен быть только POD-кодом для имен файлов, но большинство преобразователей POD воспринимают эту конструкцию как курсив. Unix- и Windows-пути со слешами и бекслашами могут быть менее читабельны, поэтому их лучше оформлять с помощью CE>.
230 |
231 | =back
232 |
233 | =item *
234 |
235 | Будьте последовательны.
236 |
237 | =item *
238 |
239 | Пишите красивый код и будьте счастливы.
240 |
241 | =back
242 |
243 | =head1 СМОТРИТЕ ТАКЖЕ
244 |
245 | L.
246 |
247 | =head1 ПЕРЕВОДЧИКИ
248 |
249 | =over
250 |
251 | =item * Andrey Sapozhnikov
252 |
253 | =item * Николай Мишин C<< >>
254 |
255 | =item * Анатолий Шарифулин C<< >>
256 |
257 | =item * Алексей Суриков (Language) C<< >>
258 |
259 | =item * Михаил Любимов (Language) C<< >>
260 |
261 | =item * Дмитрий Константинов (Language) C<< >>
262 |
263 | =item * Евгений Баранов (Language) C<< >>
264 |
265 | =back
266 |
--------------------------------------------------------------------------------
/Changes:
--------------------------------------------------------------------------------
1 | Revision history for POD2-RU
2 |
3 | {{$NEXT}}
4 |
5 | 1.84.0 2017-12-17 20:47:15 MSK
6 |
7 | * закончил перевод perldebguts
8 | 5.18.0.1.83 2016-07-04 00:45:03 MSK
9 |
10 | * change irc to #ru.pm
11 | 5.18.0.1.82 2015-08-27 10:43:30 MSK
12 |
13 | * перевел perlmod
14 | * через месяц к #cpanday
15 | * было не просто и полезно
16 | 5.18.0.1.81 2015-07-30 00:33:34 MSK
17 |
18 | * закончил перевод
19 | * perlpodstyle - Руководство по стилю Perl POD
20 | 5.18.0.1.80 2015-07-26 13:55:34 MSK
21 |
22 | * поправил явные ляпы в perlunitut
23 | 5.18.0.1.79 2015-07-26 13:05:25 MSK
24 |
25 | * закончил перевод perlunitut
26 | 5.18.0.1.78 2015-07-08 02:49:41 MSK
27 |
28 | * поправил заголовки и причесал дистрибутив
29 | 5.18.0.1.77 2015-07-07 18:58:33 MSK
30 | * закончил перевод perldebtut.pod
31 | * есть варианты для его улучшеня, сообщить Ричарду Фоли
32 | * поправил хэш, который выдает функция pod_info,
33 | * синхронизировав его с текущими файлами
34 | 5.18.0.1.76 2015-07-01 00:59:31 MSK
35 |
36 | * поприветствуем нового переводчика
37 | * Андрея Асякина C<< >>
38 | * он помог перевести perlootut
39 | 5.18.0.1.75 2015-06-29 02:32:46 MSK
40 |
41 | * для https://twitter.com/backendsecret
42 | * делаю новый релиз, перевожу perlootut
43 | 5.18.0.1.74 2015-06-25 00:39:49 MSK
44 |
45 | * перевел perlreftut
46 | * добавил новых переводчиков
47 | 5.18.0.1.73 2015-06-21 23:47:15 MSK
48 |
49 | * удалил непереведенные pod файлы
50 | * добавил
51 | * - perlootut - Object-Oriented Programming in Perl Tutorial
52 | * - perlopentut - simple recipes for opening files and pipes in Perl
53 | * - perlreftut - Mark's very short tutorial about references
54 | * - perlpacktut - tutorial on pack and unpack
55 | * - perldebtut - Perl debugging tutorial
56 | * - perlthrtut - Tutorial on threads in Perl
57 | * - perlhacktut - Walk through the creation of a simple C code patch
58 | * http://mail.pm.org/pipermail/moscow-pm/2015-June/019810.html
59 | 5.18.0.1.72 2015-06-13 15:14:55 MSK
60 |
61 | * закончил перевод perlre, нужно думать, что переводить дальше
62 | 5.18.0.1.71 2015-06-08 21:39:11 MSK
63 |
64 | * уже 80% perlre перевел, осталось чуть-чуть
65 | * добавил доки с юникодом, это нужно будет перевести в
66 | * ближайшем будущем
67 | 5.18.0.1.70 2015-05-23 04:54:57 MSK
68 |
69 | * уже 50% perlre перевел, но этого мало
70 | * perl -E "say sprintf('%02d%%',1/(2562/1320)*100)"
71 | * 70-й релиз, с 70-й годовщиной победы в
72 | * Великой Отечественной Войне
73 | 5.18.0.1.69 2015-05-20 00:53:27 MSK
74 |
75 | * теперь будет нормальное оглавление модулей
76 | * perlre перевожу, вперед YAPC Russia 2015
77 | 5.18.0.1.68 2015-05-14 07:57:09 MSK
78 |
79 | * perlre перевожу, вперед YAPC Russia 2015
80 | * http://event.yapcrussia.org/yr2015/
81 | * вперед Паша Щербинин
82 | * мою презентацию перенесли на 17 мая - отлично!!
83 | 5.18.0.1.67 2015-05-04 02:08:58 MSK
84 |
85 | * perlre перевалил за 1000, Ура!!
86 | 5.18.0.1.66 2015-04-29 00:32:54 MSK
87 |
88 | * удалил ненужные зависимости
89 | * попереводил perlre
90 | 5.18.0.1.65 2015-04-27 23:17:55 MSK
91 |
92 | * удалил ненужные тесты
93 | * добавил для будущего перевода perlglossary.pod
94 | 5.18.0.1.64 2015-04-17 00:22:21 MSK
95 | * правил cpanfile пока не прошел build в travis ci
96 | 5.18.0.1.63 2015-04-16 23:31:28 MSK
97 | * предыдущий трюк не помог, будем
98 | * setlocale(LC_CTYPE, "en_US.UTF-8") or skip("no such locale", 1) if langinfo(CODESET) ne 'UTF-8';
99 | 5.18.0.1.62 2015-04-16 22:19:21 MSK
100 | * похоже поборол тесты
101 | * use POSIX qw(setlocale LC_CTYPE);
102 | * my $locale ='ru_RU.UTF-8';# "Russian_Russia.1251";
103 | * setlocale (LC_CTYPE, $ENV{LC_CTYPE} = $locale) or plan skip_all => "cannot set locale to $locale";
104 | 5.18.0.1.61 2015-04-16 00:16:01 MSK
105 | * поправил тесты в борьбе с utf8 и "\x{0435}" does not map to iso-8859-1
106 | 5.18.0.1.60 2015-04-14 23:03:41 MSK
107 | * удалил тесты utf из-за них падают тесты на некоторых юниксах
108 | * юбилейный 60-й релиз
109 | 5.18.0.1.59 2015-04-12 04:24:23 MSK
110 | * поправил версию Test::Warn
111 | 5.18.0.1.58 2015-04-12 04:11:30 MSK
112 | * coverage 100% done!
113 | 5.18.0.1.57 2015-04-12 03:33:17 MSK
114 |
115 | * добавил в travis
116 | * PERL5OPT=-MDevel::Cover=-coverage,statement,branch,condition,path,subroutine prove -lrsv t;
117 | * cover -ignore_re '[.]t$|prove'
118 | 5.18.0.1.56 2015-04-12 03:24:07 MSK
119 |
120 | * добил покрытие pod и тестов до 100%
121 | 5.18.0.1.55 2015-04-09 21:39:21 MSK
122 |
123 | * добавил тесты
124 | 5.18.0.1.54 2015-04-09 01:20:07 MSK
125 |
126 | * make milla perltidy
127 | 5.18.0.1.53 2015-04-09 01:10:40 MSK
128 |
129 | * добавил ссылку в badge kwlitee
130 | 5.18.0.1.52 2015-04-09 00:53:02 MSK
131 |
132 | * добавил переносы строк после =item
133 | 5.18.0.1.51 2015-04-09 00:36:00 MSK
134 | * спасибо zoffixznet исправил перевод perlreref
135 | * насчет применения буквы m в регексах
136 | * красиво отформатировал участников проекта
137 | * исправил perlreref про происк с m и без
138 | * добавил test scripts for 100% coverage
139 | 5.18.0.1.50 2015-04-06 01:33:36 MSK
140 |
141 | * перезалил тесты, как у https://github.com/oklahomer/p5-Facebook-OpenGraph
142 | * переводил perlre
143 | 5.18.0.1.49 2015-03-30 04:04:36 MSK
144 |
145 | * удалил ненужные =for HTML
146 | 5.18.0.1.48 2015-03-30 03:58:12 MSK
147 |
148 | * add cpants badge thanks to FAYLAND++
149 | 5.18.0.1.47 2015-03-30 02:31:47 MSK
150 |
151 | * перевел еще 1 страницу perlre
152 | 5.18.0.1.46 2015-03-29 03:20:23 MSK
153 |
154 | * поправил html бейджика покрытия тестами ;)
155 | 5.18.0.1.45 2015-03-29 03:13:25 MSK
156 |
157 | * add coverage badge! Waw also add to travis.yml
158 | 5.18.0.1.44 2015-03-29 02:50:53 MSK
159 |
160 | * play with travis
161 | 5.18.0.1.43 2015-03-26 12:35:42 MSK
162 |
163 | * добавил ссылку на irc moscowpm
164 | 5.18.0.1.42 2015-03-25 19:39:48 MSK
165 |
166 | * начинаю править безобразный (собственный) перевод perlrun
167 | 5.18.0.1.41 2015-03-25 03:22:21 MSK
168 |
169 | * put badges to top
170 | 5.18.0.1.40 2015-03-25 03:16:51 MSK
171 |
172 | * Try to use
173 | * Dist::Zilla::Plugin::GitHubREADME::Badge - Dist::Zilla - add badges to github README.md
174 | 5.18.0.1.39 2015-03-25 02:56:28 MSK
175 |
176 | * Fighting with git:
177 | * Updates were rejected because the tag already exists in the remote.
178 | 5.18.0.1.38 2015-03-25 02:52:21 MSK
179 |
180 | * correct badges in readme
181 | 5.18.0.1.37 2015-03-25 02:38:53 MSK
182 |
183 | * add .travis.yml and play with badges ;)
184 | * add .perlcritic
185 | 5.18.0.1.36 2015-03-23 22:22:13 MSK
186 |
187 | * add test::Pod to build prereq
188 | * translate perlre 10 lines
189 | 5.18.0.1.35 2015-03-22 01:33:34 MSK
190 |
191 | * Change tag L
192 |
193 | 5.18.0.1.34 2015-03-22 01:20:57 MSK
194 |
195 | * Change code for perlcritic -1 -verbose 1
196 |
197 | 5.18.0.1.33 2015-03-20 00:36:52 MSK
198 |
199 | * Translate some perlre, so I want to make new release
200 | 5.18.0.1.32 2015-03-19 04:46:15 MSK
201 | * Add author test dependencies to cpanfile
202 |
203 | 5.18.0.1.31 2015-03-18 21:45:25 MSK
204 |
205 | * Change Changes date format so it's validated http://changes.cpanhq.org/validate ok!
206 | * I want to get there http://changes.cpanhq.org/hof (Hall of Fame)
207 |
208 | 5.18.0.1.30 2015-03-16 23:29:12 MSK
209 | * Translate half a page from perlre due to Unicode
210 | * Add format to pod
211 |
212 | 5.18.0.1.29 2015-03-15 22:02:52 MSK
213 |
214 | * Change additions Authors to Contributors
215 |
216 | 5.18.0.1.28 2015-03-15 20:11:20 MSK
217 |
218 | * Change Synopsis due to test synopsys.yt ok
219 |
220 | 5.18.0.1.27 2015-03-15 02:08:51 MSK
221 |
222 | * Add Test::Pod as prereq
223 | * according to http://cpants.cpanauthors.org/dist/POD2-RU/errors
224 |
225 | 5.18.0.1.26 2015-03-15 01:16:57 MSK
226 |
227 | * Продолжаю перевод perlre
228 | * Изменил ссылку на проект github в Readme
229 |
230 |
231 | 5.18.0.1.25 2015-03-13 23:59:38 MSK
232 |
233 | * Change cpanfile add build section
234 |
235 | 5.18.0.1.24 2015-03-12 21:40:39 MSK
236 |
237 | * Поправил perlnewmod, добавил тег L<ссылка> вокруг названий модулей
238 |
239 | 5.18.0.1.23 2015-03-12 21:32:38 MSK
240 |
241 | * Доперевел perlnewmod, хоть эта документация и устарела
242 |
243 | 5.18.0.1.22 2015-03-12 00:18:23 MSK
244 | [Spec Changes]
245 | * Исправил 1 букву в Changes
246 |
247 | 5.18.0.1.21 2015-03-11 23:34:39 MSK
248 |
249 | * Улучшил перевод у
250 | * a2p.pod
251 | * perl.pod
252 | * perlbook.pod
253 | * perlcheat.pod
254 | * perldoc.pod
255 | * перевел Acme Transmogrifier
256 | * как Акме Трансмогрифиер
257 | * (Acme Transmogrifier, Acme - выдуманная мультяшная компания, Transmogrifier - преобразователь меча в Diablo 2)
258 | * в perlintro.pod
259 |
260 | 5.18.0.1.20 2015-03-09 23:42:40 MSK
261 |
262 | * Добавил отсутствующие зависимости по pull request
263 | * https://github.com/mishin/POD-to-RU/issues/1
264 |
265 | 5.18.0.1.19 2015-03-09 23:17:41 MSK
266 |
267 | * Поправил merge конфликт
268 |
269 | 5.18.0.1.18 2015-03-09 23:13:41 MSK
270 |
271 | * Поправил pod разметку в разделе АВТОРЫ
272 |
273 | 5.18.0.1.17 2015-03-09 21:52:46 MSK
274 |
275 | * Перевел ABSTRACT на русский язык
276 |
277 | 5.18.0.1.16 2015-03-09 20:41:14 MSK
278 |
279 | * Figth with Dist::Milla
280 | * Finished translate perlretut
281 |
282 | 5.18.0.1.15 2015-02-23 20:11:20 MSK
283 |
284 | * Convert to Dist::Milla
285 | * perlretut translating finished
286 |
287 | 5.18.0.1.14 2014-10-21 20:11:20 MSK
288 |
289 | * Added translation perlsecret.pod
290 |
291 | 5.18.0.1.13 2014-10-01 20:11:20 MSK
292 |
293 | * Added translation perlreref.pod
294 |
295 | 5.18.0.1.12 2014-09-23 20:11:20 MSK
296 |
297 | * Russian language (utf8) is not not possible in readme
298 | * Minor changes
299 | * Format of Changes changed ;)
300 |
301 | 5.18.0.1.11 2014-09-22 20:11:20 MSK
302 |
303 | * Added translation perlrequick.pod
304 |
305 | 5.18.0.1.10 2013-09-24 20:11:20 MSK
306 | [Spec Changes]
307 | * Add correct distribution version
308 |
309 | 5.18.0.1.9 2013-09-24 20:11:20 MSK
310 | [Spec Changes]
311 | * Change file Changes according to CPAN::Changes
312 |
313 | 5.18.0.1.8 2013-09-02 20:11:20 MSK
314 |
315 | * Added new thanks, 01pod.t
316 | * Test pod documentation
317 |
318 | 5.18.0.1.7 2013-07-28 20:11:20 MSK
319 |
320 | * Add POD2::ES to see also, it's my fault, my sincere apologies to Enrique Nell
321 |
322 | 5.18.0.1.6 2013-07-28 20:11:20 MSK
323 |
324 | * Add changes from Anton Nikishaev
325 |
326 | 5.18.0.1.5 2013-07-28 20:11:20 MSK
327 |
328 | * Remove russian language from Build.PL
329 |
330 | 5.18.0.1.4 2013-07-28 20:11:20 MSK
331 |
332 | * Add link to Makefile.PL git repository https://github.com/mishin/perldoc-ru.git
333 |
334 | 5.18.0.1.3 2013-07-28 20:11:20 MSK
335 |
336 | * Move to Build.PL http://blogs.perl.org/users/chorny/2011/07/how-to-get-rid-of-withoutworldwriteables.html
337 |
338 | 5.18.0.1.2 2013-07-27 20:11:20 MSK
339 |
340 | * Added perlcheat.pod
341 | * Added perlnewmod.pod
342 |
343 | 5.18.0.1.1 2013-07-02 20:11:20 MSK
344 |
345 | * Initial release
346 | * Anatoliy Sharifullin agreed that i can use already translated code from https://github.com/sharifulin/pod2-ru/blob/master/RU.pm
347 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perlnewmod.pod:
--------------------------------------------------------------------------------
1 |
2 | =encoding utf8
3 |
4 | =head1 NAME/НАИМЕНОВАНИЕ
5 |
6 | perlnewmod - Подготовка нового модуля
7 |
8 | =head1 ОПИСАНИЕ
9 |
10 | Этот документ дает вам несколько советов о том, как писать модули на Perl, подготовить их к раздаче, и сделать доступными на CPAN.
11 |
12 | Одна из фишек, которая делает Perl действительно мощным, является то, что Perl хакеры, которые сталкиваются с решением проблем, могут поделиться этими решениями, чтобы больше уже никому не приходилось бороться с этими проблемами снова.
13 |
14 | Основная возможность так сделать - это реализовать задачу, поместив её решение в Perl модуль. Если вы не знаете, что это, то
15 | оставшаяся часть этого документа не принесет большой пользы для вас. Возможно вы пропустили массу полезного кода и вам нужно почитать L , L и L перед возвращением сюда.
16 |
17 | Если вы обнаружили, что нет модуля, который делает то, что вам нужно и вам придется писать код самостоятельно, рассмотрите упаковку этого кода в модуль и загрузите его на CPAN, чтобы другие могли им воспользоваться.
18 |
19 | =head2 Предостережение
20 |
21 | Мы собираемся в первую очередь сосредоточиться здесь только на Perl-модулях, а не на XS. XS модули служат несколько для иной цели, и вы должны рассмотреть разные возможности, прежде чем обратиться к ним - популярность библиотеки, переносимость на другие операционные системы, и так далее. Тем не менее, указания по подготовке, упаковке и распространению Perl модуля будет такое же для XS модуля, как и для чистого Perl'а.
22 |
23 | =head2 Что мне нужно писать в модуле?
24 |
25 | Вы можете сделать модуль из любого кода, который будет полезным для других. Все, что, скорее всего может заполнить дыру в общей библиотеке и, которое, как модуль может применяться в вашей программе. Любая часть вашего кода, который можно изолировать и извлечь и подключить во что-то другое является вероятным кандидатом.
26 |
27 | Рассмотрим пример. Предположим, вы читаете данные из местного формата в хэш хэшей в Perl, который превращается в дерево, обходите это дерево и затем посылаете каждый узел этого дерева через конвейер (pipe) на сервер компании Акме Трансмогрифиер. (Acme Transmogrifier, Acme - выдуманная мультяшная компания, Transmogrifier - преобразователь меча в Diablo 2)
28 |
29 | Теперь очень немногие люди имеют Акме Трансмогрифиер и вам пришлось бы написать программу разбора протокола с нуля - вы почти наверняка хотели бы сделать ее модулем. Уровень модуля зависит от вас: вы можете выбрать уровень протокола - тогда будет модуль аналогичный Net::SMTP, который затем общается с модулями более высокого уровня аналогично Mail::Send. Выбор за вами, но вы хотите получить модуль для этого серверного протокола.
30 |
31 | Никто на планете будет общаться на вашем местном формате данных, поэтому мы можем проигнорировать это. Но как насчет задачи, которая стоит в середине? Построение древовидной структуры из Perl переменных и затем прохождение по ним является красивой, общей проблемой, и, если никто еще не написал модуль, который делает это, вы можете положить в модуль этот код тоже.
32 | Так что, надеюсь, теперь у вас есть несколько идей о том, что хорошо для того, чтобы положить в модуль (модуляризации). Давайте теперь посмотрим, как это делается.
33 |
34 | =head2 Шаг-за-шагом: Подготовка почвы
35 |
36 | Прежде, чем мы даже начать набрасывать код, нужно приготовить несколько вещей заранее.
37 |
38 | =over 3
39 |
40 | =item Оглянись вокруг
41 |
42 | Глубоко изучите много модулей, чтобы увидеть, как они написаны. Я бы предложил, начать с L, Так как он в стандартной библиотеке и прост и красив, а затем, глядя на что-то немного более сложное такое, как L . Для объектно-ориентированного кода модули C или C дадут хороший пример того, как надо писать.
43 |
44 | Это должно дать вам общее понимание того, как модули продумываются и пишутся.
45 |
46 | =item Проверьте, что они самые свежие
47 |
48 | Есть много модулей на CPAN, и легко пропустить один, похожий на тот, который вы собираетесь написат. Хорошим плугом будет L и L и убедитесь, что вы один изобретаете велосипед!
49 |
50 | =item Обсудите необходимость
51 |
52 | Вы могли бы любить его. Вы можете чувствовать, что все остальные нуждаются в нем. Но на самом деле может и не быть реального спроса на него. Если вы не знаете будет ваш модуль иметь спрос или нет, рассмотреть вопрос о направлении вопроса в группу новостей comp.lang.perl.modules, или в качестве последнего средства, спросите в списке рассылки модулей на modules@perl.org. Помните, что это закрытый список с очень долгим временем отклика - будьте готовы довольно долгое время ответа от них.
53 |
54 | =item Выберите имя
55 |
56 | У Perl модулей, включённых в CPAN есть иерархии имен, в которые вы должны попробовать вписаться в. См. L для более подробной информации о том, как это работает, и поищите по CPAN, посмотрите на список модулей, чтобы почувствовать каким может быть имя. По крайней мере, помните это: название модуля должно быть капитализировано (This::Thing), вписывается в категорию, и названием кратко объяснять свою цель.
57 |
58 | =item Проверьте еще раз
59 |
60 | В то время как вы делаете это, действительно убедитесь, что вы не пропустили модуль, похожий на тот, который вы собираетесь написать.
61 |
62 | Когда вы выбрали имя и вы уверены, что ваш модуль востребован и другого такого нет в настоящее время, пришло время начать программировать.
63 |
64 | =back
65 |
66 | =head2 Шаг-за-шагом: Создание модуля
67 |
68 | =over 3
69 |
70 | =item Начните с F или F
71 |
72 | Утилита F поставляется в составе L CPAN пакета. Она создает каталог с шаблонами (stubs) всех необходимые файлов для запуска нового модуля, согласно последним "лучшим практикам" для разработки модулей и вызывается из командной строки, таким образом:
73 |
74 | module-starter --module=Foo::Bar \
75 | --author="Your Name" --email=yourname@cpan.org
76 |
77 | Если вы не хотите устанавливать пакет L из CPAN, F более старый инструмент, первоначально предназначенный для разработки XS модулей, который поставляется в комплекте с Perl дистрибутивом.
78 |
79 | Типичный вызов L для чисто Перлового модуля Perl будет:
80 |
81 | h2xs -AX --skip-exporter --use-new-tests -n Foo::Bar
82 |
83 | C<-A> пропускает код Autoloader, C<-X> пропускает XS элементы, C<--skip-exporter> пропускает код Exporter, C<--use-new-tests> устанавливает современную среду тестирования, и C<-n> указывает имя модуля.
84 |
85 | =item Используйте L и L
86 |
87 | Код модуля должен сообщать предупреждения C и быть в чистом, строгом стиле C, так как вы не можете гарантировать условия, в которыч будет использоваться под. Кроме того, вы же не хотите распространять код, который не будет выдавать предупреждения, написанный в нестрогом, грязном стиле, не так ли?
88 |
89 | =item Используйте L
90 |
91 | Модуль L позволяет представить ваши сообщения об ошибках с точки зрения вызова процедур, это дает вам возможность сигнализировать проблемы связанные с их вызовом, а не с кодом вашего модуля. Например, если вы говорите:
92 |
93 | warn "No hostname given";
94 |
95 | пользователь увидит что-то вроде этого:
96 |
97 | No hostname given at /usr/local/lib/perl5/site_perl/5.6.0/Net/Acme.pm
98 | line 123.
99 |
100 | который выглядит так, как будто ваш модуль делает что-то неправильно. Вместо этого вы хотите свалить вину на пользователя и сказать следующее:
101 |
102 | No hostname given at bad_code, line 10.
103 |
104 | Вы можете сделать это с помощью L, заменив C на C. Если вам нужно C , скажите C вместо этого. Однако, имейте C и C на месте для проверки вменяемости - там, где ошибка получается по вине вашего модуля.
105 |
106 | =item Используйте модуль L - мудро!
107 |
108 | L дает стандартный способ экспортировать символы и подпрограммы из вашего модуля в пространство имен вызывающего кода. Например, говоря C будет импортирована подпрограмма C.
109 |
110 | Переменная пакета C<@EXPORT> будет определять, какие символы экспортируются когда вызывающий код просто говорит C - Вы вряд ли когда-нибудь захотите положить туда что-то. C<@EXPORT_OK>, с другой стороны, указывает, какие символы вы готовы экспортировать. Если вы хотите экспортировать много символов, используйте C<%EXPORT_TAGS> и определите стандартный набор переменных для экспорта - посмотрите на L для более подробной информации.
111 |
112 | =item Используйте L
113 |
114 | Работа не закончена, пока не закончена документация, вам нужно уделить какое-то время на написание документации для вашего модуля.
115 | C или С даст шаблоны для заполнения кодом, если вы не уверены в формате pod посмотрите на L для введения. Напишите хороший пример использования вашего модуля (synopsis) , описание, а затем более подробное описание синтаксиса и функций отдельных подпрограмм или методов. Используйте комментарии Perl для разработчиков и описание в POD для конечных пользователей модуля.
116 |
117 | =item Пишите тесты
118 |
119 | Вам рекомендуется создать тесты для вашего модуля, чтобы убедиться, что он работает, как нужно на множестве платформ, которые поддерживает Perl, если вы загрузите модуль CPAN, то множество тестеров будет тестировать ваш модуль и отправлять вам результаты испытаний. Опять же, C и C предоставляет фреймворк для тестирования, который вы можете расширить - вы должны сделать тесты, которы будут тестировать нечто большее, чем просто проверка, что ваш модуль будет успешно вызываться.
120 | L и L - являются хорошим местом с которого можно начать написание тестов.
121 |
122 | =item Напишите файл README
123 |
124 | Если вы загрузите модуль на CPAN, то автоматические Гремлины извлекут файл README в ваш каталог CPAN. Там можно описать, что делает ваш модуль в деталях, а также изменениями в последнем релизе.
125 |
126 | =back
127 |
128 | =head2 Шаг за шагом: Распространение вашей модуля
129 |
130 | =over 3
131 |
132 | =item Получите идентификатор пользователя CPAN
133 |
134 | Каждому разработчику, публикующему модули на CPAN нужен в CPAN ID. Посетите C Выберите "Request PAUSE Account", и ждите, что ваш запрос будет одобрен администратором PAUSE.
135 |
136 | =item C
137 |
138 | правда эти команды справедливы для Unix (примечание mishin)
139 | для Windows, где Ларри советует Strawberry perl
140 | будет работать dmake test; dmake dist,
141 | но и dmake dist не выполниться, если предварительно не установить на систему
142 | gnu-tar и gnu-zip и добавить путь к ним в переменную PATH
143 |
144 | Еще раз, C или C сделает всю работу за вас.
145 | Они создадут стандартный C , который вы видите, когда загружаете и устанавливаете модули.
146 |
147 | Once you've ensured that your module passes its own tests - always a good thing to make sure - you can make dist, and the Makefile will hopefully produce you a nice tarball of your module, ready for upload.
148 |
149 | Убедившись, что ваш модуль проходит свои тесты - можно сделать теперь C и Makefile создаст для вас архив готовый к загрузке на CPAN.
150 |
151 | =item Загрузите архив
152 |
153 | В емейле, который вы получили с CPAN ID будет рассказано, как войти в систему PAUSE, the Perl Authors Upload SErver. (Авторский Perl Сервер Загрузки). Здесь в меню вы можете загрузить свой модуль на CPAN.
154 |
155 | =item Объявление о новом модуле
156 |
157 | После загрузки, он будет лежать незамеченным в вашем авторском каталоге. Если вы хотите, чтобы он был связан с остальной частью CPAN, вы должны будете найти пункт Регистрации Пространства имен "Register Namespace" на сервере PAUSE. После регистрации ваш модуль появится в с списках, отсортированных по-модулям и по категориям на CPAN.
158 |
159 | =item Объявите в clpa
160 |
161 | Если у вас есть горячее желание рассказать миру о вашем релизе - разместить объявление в группу новостей comp.lang.perl.announce.
162 |
163 | =item Исправляйте баги!
164 |
165 | Как только вы начинаете собирать пользователей, они будут отправлять вам сообщения об ошибках. Если вам повезет, они даже пришлют вам патчи. Добро пожаловать, вы прикоснулись к радости разработки программного обеспечения..
166 |
167 | =back
168 |
169 | =head1 АВТОР
170 |
171 | Simon Cozens, C
172 |
173 | Обновлено Kirrily "Skud" Robert, C
174 |
175 | =head1 СМОТРИТЕ ТАКЖЕ
176 |
177 | L, L, L, L, L,
178 | L, L, L, L, L
179 | L, L, L
180 | L , учебник Кена Вильямса о том, как создать свой собственный модуль на L, но похоже это дока устарела,т.к сейчас популярна L и супер модуль от Tatsuhiko Miyagawa L, L
181 |
182 | =head1 ПЕРЕВОДЧИКИ
183 |
184 | =over
185 |
186 | =item * Николай Мишин C<< >>
187 |
188 | =back
189 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perlpodstyle.pod:
--------------------------------------------------------------------------------
1 | =encoding utf8
2 |
3 | =head1 NAME/НАИМЕНОВАНИЕ
4 |
5 | perlpodstyle - Руководство по стилю Perl POD
6 |
7 |
8 | =head1 DESCRIPTION (ОПИСАНИЕ)
9 |
10 | Это общие рекомендации о том, как писать Perl POD документацию
11 | для скриптов и модулей, на основе общих принципов для написания хорошей страницы
12 | UNIX man (далее маны). Все эти руководящие принципы являются, конечно, не обязательными, но следование им
13 | сделает вашу документацию более последовательной по отношению к другой документации в системе.
14 |
15 | Имя программы пишется жирным шрифтом
16 | (с использованием BEE) везде, где оно упоминается, как и все опции программы.
17 | Аргументы должны быть написаны курсивом(italics) (IEE). Имена функций
18 | традиционно пишутся курсивом; если вы пишете функцию, как function(), то
19 | Pod::Man позаботиться об этом за вас. Исходный код или команды должны
20 | быть в CEE. Ссылки на другие man страницы должны быть в форме
21 | C или Cmanpage(section)E>, и Pod::Man
22 | будет автоматически форматировать их надлежащим образом. Вторая форма, с
23 | LEE, используется для запроса, когда POD форматтер делает ссылку на
24 | man страницу, если это возможно. Как исключение некоторые обычно опускают секцию
25 | , когда ссылаются на документацию модуля , поскольку не ясно, какой раздел
26 | документации использовать; используйте CModule::NameE> для модуля
27 | вместо ссылки.
28 |
29 | Ссылки на другие программы или функции, как правило, в форме ссылки на ман (man)
30 | страницу так, что могут быть предоставлены перекрестные ссылки и тому подобное.
31 | Можно переусердствовать в этом, так что будьте осторожны, не
32 | загромождайте вашу документацию слишком большим количеством разметки. Ссылки на другие
33 | программы, которые не предоставляются как ман страницы должны быть заключены в BEE.
34 |
35 | Основные заголовки должны быть написаны с помощью директивы C<=head1> и
36 | исторически написаны в довольно поразительном формате ВСЕ ВЕРХНЕМ РЕГИСТРЕ; это
37 | не является обязательным, но настоятельно рекомендуется там, чтобы у секции
38 | было последовательное наименование среди различных пакетов программного обеспечения. Незначительные заголовки могут
39 | быть включены с помощью C<=head2> и они, как правило, в смешанном регистре.
40 |
41 | Стандартными разделами страницы руководства являются:
42 |
43 | =over 4
44 |
45 | =item NAME (НАИМЕНОВАНИЕ)
46 |
47 | Обязательная Секция; следует список с разделителями запятыми программ или
48 | функций, которые задокументированы на этой POD странице , такие как:
49 |
50 | foo, bar - programs to do something
51 |
52 | Индексаторы страниц руководства часто очень разборчивы в формате этого
53 | раздела, поэтому не пишите ничего в нем кроме этой строки. Каждая программа или
54 | функция, задокументированная в этой POD странице должна быть перечислена, разделенная
55 | запятой и пробелом. Для модуля Perl просто дайте имя модуля. Один и только один тире должен разделять список программ или функции из описания.
56 | Не используйте разметку, такую как CEE или BEE
57 | где-либо в этой строке. Функции не должна писаться с C<()> или тому подобное.
58 | Для описания идеально подходит одна строка, даже если ман-программа заменяет тире несколькими табуляторами.
59 |
60 | =item SYNOPSIS (КРАТКИЙ СИНТАКСИС)
61 |
62 | Короткий пример использования программ и функций. Этот раздел
63 | является обязательным для 3 раздела страницы. Для документации Perl модуля
64 | обычно удобнее иметь содержимое этой секции в виде короткого блока
65 | с типичными способами использования модуля.
66 |
67 | =item DESCRIPTION (ОПИСАНИЕ)
68 |
69 | Расширенное описание и обсуждение программы или функции, или
70 | тела документации ман-страницы документа (программы). Если этот раздел
71 | особенно длинен, то будет хорошей идеей, чтобы разбить его на подразделы
72 | с директивами C<=head2> такими, как:
73 |
74 | =head2 Normal Usage
75 |
76 | =head2 Advanced Features
77 |
78 | =head2 Writing Configuration Files
79 |
80 | или то, что подходит для вашей документации.
81 |
82 | Для модуля, как правило, документации интерфейсов
83 | обычно идет в виде списка с C<=item> для каждого интерфейса.
84 | В зависимости от числа интерфейсов вы можете расположить документацию
85 | раздельно по секциям для METHODS (МЕТОДОВ), FUNCTIONS (ФУНКЦИЙ),
86 | CLASS METHODS (МЕТОДОВ КЛАССА), или INSTANCE METHODS (МЕТОДОВ ЭКЗЕМПЛЯРА КЛАССА)
87 | и сохранить раздел DESCRIPTION для небольшого описания.
88 |
89 | =item OPTIONS (ПАРАМЕТРЫ)
90 |
91 | Подробное описание каждого из параметров командной строки, которые принимает
92 | программа. Это описание должно быть отдельно от введения (description)
93 | , т.к. его могут использовать парсеры такие, как L.
94 | Обычно этот раздел представляется в виде списка, где каждый
95 | параметр находится в отдельном C<=item>. Специфические строковые параметры должны быть
96 | заключены в BEE. Любые значения, которые принимает параметр должны быть
97 | заключены в IEE. Например, раздел для параметра
98 | B<--section>=I может быть показан, как:
99 |
100 | =item B<--section>=I
101 |
102 | Синонимы параметров (например, короткие и длинные формы), разделенные
103 | запятой и пробелом на той же C<=item> линии, или опционально в списке представлены, как их
104 | собственный элемент со ссылкой на каноническое имя. Например,
105 | B<--section> также может быть записана как B<-s>, выше, то будет:
106 |
107 | =item B<-s> I, B<--section>=I
108 |
109 | Написание коротких вариантов рекомендуется сначала, потому что так легче читать.
110 | Длинный вариант должен быть достаточно длинен, чтобы глаза все равно обратили на него внимание,
111 | а короткий вариант может потеряться в визуальном шуме.
112 |
113 | =item RETURN VALUE (ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ)
114 |
115 | То, что программа или функция возвращает, если выполнена успешно. Этот раздел может быть
116 | опущен для программ чьи коды точного выхода не важны,
117 | они возвращают 0 на успех и не нулевой ответ в случае провала как стандарт. Этот раздел
118 | всегда должен присутствовать для функций. Для модулей это может быть полезным для
119 | суммирования возвращаемых значений из интерфейса модуля, или это может больше
120 | полезно для обсуждения возвращаемых значений отдельно в документации каждой
121 | функции или метода, которыми обеспечивает модуль.
122 |
123 | =item ERRORS (ОШИБКИ)
124 |
125 | Исключения (exceptions), ошибки кодов возврата, статусы выхода (exit statuses) и параметры номеров ошибок (errno settings).
126 | Обычно используется для функции или документации модуля; документация программы
127 | вместо этого использует диагностики (DIAGNOSTICS). Общее эмпирическое правило, что ошибки,
128 | выводящиеся на C или C и предназначенные для конечного пользователя
129 | документируются в диагностике (DIAGNOSTICS), а ошибки внутреннего (internal) вызова
130 | программы, предназначенные для других программистов описаны в ошибках(ERRORS). Когда
131 | документируемая функция устанавливает номер ошибки (errno), то полный список возможных номеров ошибок (errno)
132 | должен быть приведен здесь.
133 |
134 | =item DIAGNOSTICS (ДИАГНОСТИКА)
135 |
136 | Все возможные сообщения, которые программа может распечатать, и что они означают. Вы
137 | возможно, пожелает следовать тому же стилю документации, что и документация Perl;
138 | посмотрите perldiag(1) для получения более подробной информации (и посмотрите также исходный код (source) POD).
139 |
140 | Если это возможно, просьба включите подробную информацию о то, что должен сделать пользователь для того, чтобы
141 | исправить ошибку; документирование ошибки как "входной буфер слишком маленький" ( "the input buffer is
142 | too small"), не сообщая пользователю, как увеличить размер входного буфера (input
143 | buffer) (или по крайней мере сказать им, что это невозможно) не очень полезно.
144 |
145 | =item EXAMPLES (ПРИМЕРЫ)
146 |
147 | Дайте несколько примеров использования программы или функции. Не скупитесь;
148 | пользователи часто находят это наиболее полезной частью документации. Примеры
149 | обычно предоставляются в виде подробных параграфов.
150 |
151 | Не показывайте пример не объясняя, что он делает. Добавление короткого комментария,
152 | говорящего о том, что этот пример будет делать может увеличить значение этого
153 | примера безмерно(immensely).
154 |
155 | =item ENVIRONMENT (ОКРУЖЕНИЕ)
156 |
157 | Переменные среды, в которых работает программа обычно представлены в виде
158 | списка, используя C<=over>, C<=item>, и C<=back>. Например:
159 |
160 | =over 6
161 |
162 | =item HOME
163 |
164 | Используется для определения домашнего каталога пользователя. F<.foorc> в этом
165 | каталоге читается для подробной конфигурации, если он существует.
166 |
167 | =back
168 |
169 | Так как переменные среды, как правило, представлены прописными буквами, никакого дополнительного
170 | специального форматирования не нужно; они сами достаточно яркие.
171 |
172 | =item FILES
173 |
174 | Все файлы, используемые программой или функцией, обычно представлены в виде списка,
175 | и то, как он их используют. Имена файлов должны быть заключены в FEE.
176 | Это особенно важно для файлов документов, которые будут потенциально
177 | изменены.
178 |
179 | =item CAVEATS (ПРЕДОСТЕРЕЖЕНИЯ)
180 |
181 | Вещи, которые требуют особого внимания, иногда называются предупреждениями (WARNINGS).
182 |
183 | =item BUGS (ОШИБКИ)
184 |
185 | Вещи, которые ломаются или просто не работают правильно.
186 |
187 | =item RESTRICTIONS (ОГРАНИЧЕНИЯ)
188 |
189 | Ошибки, которые вы не планируете исправить. :-)
190 |
191 | =item NOTES (ПРИМЕЧАНИЯ)
192 |
193 | Прочие комментарии.
194 |
195 | =item AUTHOR (АВТОР)
196 |
197 | Кто написал это (используйте АВТОРЫ (AUTHORS) для несколько человек). Хорошей идеей будет
198 | включить ваш текущий адрес электронной почты (или некоторые адреса электронной почты, на которые
199 | должны быть отправлены отчеты об ошибках ) или некоторая другая контактная информация так, чтобы пользователи
200 | могли связаться с вами. Помните, документацию программы, как правило,
201 | читают дикие гораздо дольше, чем вы ожидаете и выбирайте метод контакта именно для них;).
202 |
203 | =item HISTORY
204 |
205 | Программы, полученные из других источников, иногда имеют этот раздел. Некоторые люди держат
206 | лог модификации здесь, но, он обычно достаточно длинный и обычно лучше его
207 | сохранять в отдельном файле.
208 |
209 | =item COPYRIGHT AND LICENSE (АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ)
210 |
211 | Для авторского права (For copyright)
212 |
213 | Copyright YEAR(s) YOUR NAME(s)
214 |
215 | ((C) не обязателен. Также не обязательно писать "all rights reserved".)
216 |
217 | Для лицензирования самым простым способом является использование лицензии Perl:
218 |
219 | Эта библиотека является свободным программным обеспечением; вы можете распространять её и/или модифицировать
220 | на тех же условиях, что и сам Perl.
221 |
222 | This library is free software; you may redistribute it and/or modify
223 | it under the same terms as Perl itself.
224 |
225 | Такая лицензия позволит использовать ваш модуль вместе с Perl. Обратите внимание, что
226 | данный пример лицензирования не является обязательным или требованием, вы
227 | конечно, свободны выбирать любую лицензию (any licensing).
228 |
229 | =item SEE ALSO (СМОТРИТЕ ТАКЖЕ)
230 |
231 | Другие ман-страницы (man pages), для проверки, такие как man(1), man(7), makewhatis(8), или
232 | catman(8). Обычно простой список ман-страниц, разделенных запятыми, или
233 | пункт, дающий работающие ссылки. Ссылки на ман-страницы, если
234 | они используют стандартную форму C, не должны быть заключены в
235 | LEE (хотя это рекомендуется).
236 |
237 | Если пакет имеет список рассылки, то включая URL-адрес или инструкции о том, как на нее подписаться здесь.
238 |
239 | Если пакет имеет веб-сайт, то его URL-адрес включают здесь.
240 |
241 | =back
242 |
243 | Для документации объектно ориентированных библиотек или модулей может понадобиться использовать
244 | секции CONSTRUCTORS (КОНСТРУКТОРЫ) и METHODS (МЕТОДЫ), или CLASS METHODS (МЕТОДЫ КЛАССА) и
245 | INSTANCE METHODS (МЕТОДЫ ЭКЗЕМПЛЯРА КЛАССА)
246 | , для подробной документации частей библиотеки и сохраняя параграф DESCRIPTION (Описание) для небольшого обзора.
247 | Большим модулям с функциональным интерфейсом могут потребоваться использовать параграфы FUNCTIONS (ФУНКЦИИ)
248 | по аналогичным причинам. Некоторые люди используют OVERVIEW (Обзор) для суммарного описания, если оно достаточно большое.
249 |
250 | Последовательность разделов варьируется, хотя NAME (НАИМЕНОВАНИЕ) всегда должно быть первой секцией
251 | (иначе вы сломаете систему ман-страниц) и NAME (НАИМЕНОВАНИЕ), SYNOPSIS(КРАТКИЙ ОБЗОР),
252 | DESCRIPTION (ОПИСАНИЕ), и OPTIONS (ОПЦИИ, ПАРАМЕТРЫ)
253 | обычно всегда располагаются в начале и в таком порядке, как они представлены.
254 | Обычно SEE ALSO (СМОТРИТЕ ТАКЖЕ), AUTHOR (АВТОР) и аналогичные материалы должны быть
255 | оставлены для окончания страницы. Некоторые системы также перемещают WARNINGS (ПРЕДУПРЕЖДЕНИЯ) и NOTES (ПРИМЕЧАНИЯ) в конец.
256 | Приведенный выше порядок должен быть разумным для большинства целей.
257 |
258 | Некоторые системы используют CONFORMING TO (СООТВЕТСТВУЮТ ЭТОМУ), чтобы обратить внимание на соответствие стандартам
259 | и MT-LEVEL (УРОВЕНЬ МОНТИРОВАНИЯ) чтобы отметить одновременно безвредность для использования в многопоточных программах или обработчиками сигналов (signal
260 | handlers). Эти заголовки в первую очередь полезны при документировании частей
261 | библиотек C.
262 |
263 | Наконец, общее замечание старайтесь не использовать чрезмерное количество разметки.
264 | Как описано здесь и в L, вы можете спокойно оставить Perl
265 | переменные, имена функций, ссылки на ман-страницы и т.п. без всяких украшений,
266 | разметки и POD переводчики будут вычислять его для вас. Это делает возможным
267 | редактирование документации позднее гораздо легче. Обратите внимание, что многие существующие
268 | переводчики будут делать неправильные вещи с адресами электронной почты, завернутой в LEE
269 | , так что не делайте этого.
270 |
271 | =head1 СМОТРИТЕ ТАКЖЕ (SEE ALSO)
272 |
273 | Для получения дополнительной информации, которая может быть более точной для ваших конкретных
274 | система, см в зависимости от вашей системы нумерации руководств или L или L.
275 |
276 | Эта документация ведется в рамках распределения podlators.
277 | Текущая версия всегда доступна со своего веб-сайта на
278 | .
279 |
280 | =head1 АВТОР (AUTHOR)
281 |
282 | Русс Албери (Russ Allbery) , значительная часть этой документации
283 | взята из документации оригинала B реализованной
284 | Лари Воллом (Larry Wall) и Томом Кристиансеном (Tom Christiansen).
285 |
286 | =head1 АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ (COPYRIGHT AND LICENSE)
287 |
288 | Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010 Russ Allbery
289 | .
290 |
291 | Эта документация является свободным программным обеспечением; вы можете распространять её и/или модифицировать
292 | на тех же условиях, как и сам Perl.
293 |
294 | This documentation is free software; you may redistribute it and/or modify
295 | it under the same terms as Perl itself.
296 |
297 | =cut
298 |
299 | =head1 ПЕРЕВОДЧИКИ
300 |
301 | =over
302 |
303 | =item * Николай Мишин C<< >>
304 |
305 | =back
306 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perl.pod:
--------------------------------------------------------------------------------
1 |
2 | =encoding utf8
3 |
4 | =head1 NAME/НАИМЕНОВАНИЕ
5 |
6 | perl - Интерпретатор языка Perl5
7 |
8 | =head1 СИНТАКСИС
9 |
10 | B S<[ B<-sTtuUWX> ]>
11 | S<[ B<-hv> ] [ B<-V>[:I] ]>
12 | S<[ B<-cw> ] [ B<-d>[B][:I<отладчик>] ] [ B<-D>[I<кол-во/список>] ]>
13 | S<[ B<-pna> ] [ B<-F>I<шаблон> ] [ B<-l>[I<восьмеричный>] ] [ B<-0>[I<восьмеричный/шестнадцатеричный>] ]>
14 | S<[ B<-I>I ] [ B<-m>[B<->]I<модуль> ] [ B<-M>[B<->]I<'модуль...'> ] [ B<-f> ]>
15 | S<[ B<-C [I<кол-во/список>] >]>
16 | S<[ B<-S> ]>
17 | S<[ B<-x>[I] ]>
18 | S<[ B<-i>[I<расширение>] ]>
19 | S<[ [B<-e>|B<-E>] I<'команда'> ] [ B<--> ] [ I<файл программы> ] [ I<аргумент> ]...>
20 |
21 | Для получения дополнительной информации по этим параметрам, можно запустить C.
22 |
23 | =head1 ПОЛУЧЕНИЕ ПОМОЩИ
24 |
25 | F Программа дает вам доступ ко всей документации, которая поставляется с Perl. Вы можете получить более подробную документацию, руководства и интернет-сообщество поддержки на L .
26 |
27 | Если вы новичок в Perl, то вы должны начать, запустив C, которая представляет собой общее введение для новичков и дает некоторые базовые навыки, чтобы помочь вам ориентироваться в остальной обширной документации Perl. Запустите С чтобы узнать больше о том, как вы можете работать с F .
28 |
29 | Для удобства чтения руководство Perl был разделено на несколько частей.
30 |
31 | =begin buildtoc
32 |
33 | # Этот раздел парсится Porting/pod_lib.pl для использования pod/buildtoc и т.д.
34 |
35 | flag =g perluniprops perlmodlib perlapi perlintern
36 | flag =go perltoc
37 | flag =ro perlcn perljp perlko perltw
38 | flag = perlvms
39 |
40 | path perlfaq.* cpan/perlfaq/lib/
41 | path perlglossary cpan/perlfaq/lib/
42 | path perlxs(?:tut|typemap)? dist/ExtUtils-ParseXS/lib/
43 | path perldoc cpan/Pod-Perldoc/lib/
44 |
45 | aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
46 |
47 | =end buildtoc
48 |
49 | =head2 Обзор
50 |
51 | perl Perl обзор (этот раздел)
52 | perlintro Введение в Perl для начинающих
53 | perlrun Выполнение программы на Perl и его опции
54 | perltoc Perl документация Оглавление
55 |
56 | =head2 Учебники
57 |
58 | perlreftut Краткое руководство по ссылкам, которое написал Марк
59 | perldsc Perl введение в структуры данных
60 | perllol Структуры данных Perl: массивы массивов
61 |
62 | perlrequick Быстрый старт использования регулярных выражений Perl
63 | perlretut Учебник регулярных выражений Perl
64 |
65 | perlootut Руководство по Объектно-ориентированному Программированию в Perl
66 |
67 | perlperf Perl Производительность и Методы оптимизации
68 |
69 | perlstyle Стиль написания Perl-кода
70 |
71 | perlcheat Perl 5 Шпаргалка
72 | perltrap Perl ловушки для неосторожных
73 | perldebtut Учебник по отладке Perl кода
74 |
75 | perlfaq Perl часто задаваемые вопросы
76 | perlfaq1 Общие вопросы о Perl
77 | perlfaq2 Получение и изучение Perl
78 | perlfaq3 Инструменты программирования
79 | perlfaq4 Манипуляция данными
80 | perlfaq5 Файлы и форматы
81 | perlfaq6 Регулярные выражения
82 | perlfaq7 Проблемы языка Perl
83 | perlfaq8 Взаимодействие с системой
84 | perlfaq9 Сети
85 |
86 | =head2 Справочное руководство
87 |
88 | perlsyn Синтаксис Perl
89 | perldata Структуры данных Perl
90 | perlop Perl операторы и их приоритет
91 | perlsub Perl подпрограммы
92 | perlfunc Perl встроенные функции
93 | perlopentut Учебник по открытию разных сущностей в Perl
94 | perlpacktut Учебник по pack и unpack
95 | perlpod Формат простой старой документации (Plain Old Documentation POD)
96 | perlpodspec Простая старая документация: спецификация формата и примечания
97 | perlpodstyle Руководство по стилю Perl POD
98 | perldiag Perl диагностические сообщения
99 | perllexwarn Perl предупреждения и управление ими
100 | perldebug Perl отладка
101 | perlvar Perl предопределенные переменные
102 | perlre Регулярные выражения Perl
103 | perlrebackslash Бэкслеш и Эскейп последовательности в регулярных выражениях Perl
104 | perlrecharclass Классы символов регулярных выражений Perl
105 | perlreref Справочник регулярных выражений Perl
106 | perlref Perl ссылки, остальная часть истории
107 | perlform Perl форматы
108 | perlobj Perl объекты
109 | perltie Perl объекты скрытые за простыми переменными
110 | perldbmfilter Perl DBM фильтры
111 |
112 | perlipc Perl межпроцессное взаимодействие
113 | perlfork Perl fork() информация
114 | perlnumber Perl семантики числа
115 |
116 | perlthrtut Учебник на потокам в Perl
117 |
118 | perlport Perl руководство по переносимости
119 | perllocale Perl языковая поддержка
120 | perluniintro Введение в Perl Юникод
121 | perlunicode Поддержка Юникода в Perl
122 | perlunifaq Perl Unicode FAQ
123 | perluniprops Каталог свойств Unicode в Perl
124 | perlunitut Учебник по Юникоду в Perl
125 | perlebcdic Соображения для запуска Perl на EBCDIC платформах
126 |
127 | perlsec Perl безопасность
128 |
129 | perlmod Perl модули: как они работают
130 | perlmodlib Perl модули: как писать и использовать
131 | perlmodstyle Perl модули: правильный стиль написания модулей
132 | perlmodinstall Perl модули: как установить из CPAN
133 | perlnewmod Perl модули: подготовка нового модуля для опубликования
134 | perlpragma Perl модули: как писать пользовательские прагмы (директивы компилятору)
135 |
136 | perlutil утилиты, идущие в комплекте с поставкой Perl
137 |
138 | perlfilter Perl исходные файлы
139 |
140 | perldtrace Perl поддержка для DTrace
141 |
142 | perlglossary Perl Глоссарий
143 |
144 | =head2 Внутренности и Язык интерфейса для C
145 |
146 | perlembed Perl пути для встраивания perl в ваши C или C++ приложения
147 | perldebguts Perl внутренности отладки и советы
148 | perlxstut Perl XS учебник
149 | perlxs Perl XS интерфейс прикладного программирования
150 | perlxstypemap Perl XS C/Perl инструменты преобразования типов
151 | perlclib Внутренние замены для стандартных библиотечных функций C
152 | perlguts Введение в Perl API, Perl внутренние функции для тех, кто делает расширения
153 | perlcall Perl соглашения о вызове из C
154 | perlmroapi Perl метод резолюции интерфейса плагинов
155 | perlreapi Интерфейс плагинов к регулярным выражениям Perl
156 | perlreguts Описание машины регулярных выражений Perl
157 |
158 | perlapi Perl API объявления (автоматически сгенерированные)
159 | perlintern Perl внутренние функции (автоматически сгенерированные)
160 | perliol C API для Perl реализации ввода-вывода в слоях
161 | perlapio Perl внутренний интерфейс ввода-вывода абстрактный интерфейс
162 |
163 | perlhack Руководство хакера Perl
164 | perlsource Руководство по дереву исходного кода Perl
165 | perlinterp Обзор исходного кода интерпретатора Perl и как он работает
166 | perlhacktut Путь по созданию простого патча на C
167 | perlhacktips Советы как хачить(взламывать) код ядра Perl на С
168 | perlpolicy Perl политики(установки) разработки
169 | perlgit Использование Git с Perl репозиторием
170 |
171 | =head2 Разное
172 |
173 | perlsecret Cекретные операторы и константы Perl
174 | perlbook Информация о книгах по Perl
175 | perlcommunity Информация о Perl сообществе
176 |
177 | perldoc Perl-документация в POD-формате
178 |
179 | perlhist Записи истории Perl
180 | perldelta Perl изменения с предыдущей версии
181 | perl5180delta Perl изменения в версии 5.18.0
182 | perl5161delta Perl изменения в версии 5.16.1
183 | perl5162delta Perl изменения в версии 5.16.2
184 | perl5163delta Perl изменения в версии 5.16.3
185 | perl5160delta Perl изменения в версии 5.16.0
186 | perl5144delta Perl изменения в версии 5.14.4
187 | perl5143delta Perl изменения в версии 5.14.3
188 | perl5142delta Perl изменения в версии 5.14.2
189 | perl5141delta Perl изменения в версии 5.14.1
190 | perl5140delta Perl изменения в версии 5.14.0
191 | perl5125delta Perl изменения в версии 5.12.5
192 | perl5124delta Perl изменения в версии 5.12.4
193 | perl5123delta Perl изменения в версии 5.12.3
194 | perl5122delta Perl изменения в версии 5.12.2
195 | perl5121delta Perl изменения в версии 5.12.1
196 | perl5120delta Perl изменения в версии 5.12.0
197 | perl5101delta Perl изменения в версии 5.10.1
198 | perl5100delta Perl изменения в версии 5.10.0
199 | perl589delta Perl изменения в версии 5.8.9
200 | perl588delta Perl изменения в версии 5.8.8
201 | perl587delta Perl изменения в версии 5.8.7
202 | perl586delta Perl изменения в версии 5.8.6
203 | perl585delta Perl изменения в версии 5.8.5
204 | perl584delta Perl изменения в версии 5.8.4
205 | perl583delta Perl изменения в версии 5.8.3
206 | perl582delta Perl изменения в версии 5.8.2
207 | perl581delta Perl изменения в версии 5.8.1
208 | perl58delta Perl изменения в версии 5.8.0
209 | perl561delta Perl изменения в версии 5.6.1
210 | perl56delta Perl изменения в версии 5.6
211 | perl5005delta Perl изменения в версии 5.005
212 | perl5004delta Perl изменения в версии 5.004
213 |
214 | perlexperiment Список экспериментальных функций в Perl
215 |
216 | perlartistic Perl Лицензия Художников (Artistic License)
217 | perlgpl Универсальная Общественная Лицензия GNU
218 |
219 | =head2 Для разных языков
220 |
221 | =for buildtoc flag +r
222 |
223 | perlcn Perl для упрощенного китайского (в EUC-CN)
224 | perljp Perl для японского (в EUC-JP)
225 | perlko Perl для корейского (в EUC-KR)
226 | perltw Perl для традиционного китайского (в Big5)
227 |
228 | =head2 Для отдельных платформ
229 |
230 | perlaix Perl заметки для AIX
231 | perlamiga Perl заметки для AmigaOS
232 | perlbs2000 Perl заметки для POSIX-BC BS2000
233 | perlce Perl заметки для WinCE
234 | perlcygwin Perl заметки для Cygwin
235 | perldgux Perl заметки для DG/UX
236 | perldos Perl заметки для DOS
237 | perlfreebsd Perl заметки для FreeBSD
238 | perlhaiku Perl заметки для Haiku
239 | perlhpux Perl заметки для HP-UX
240 | perlhurd Perl заметки для Hurd
241 | perlirix Perl заметки для Irix
242 | perllinux Perl заметки для Linux
243 | perlmacos Perl заметки для Mac OS (Classic)
244 | perlmacosx Perl заметки для Mac OS X
245 | perlnetware Perl заметки для NetWare
246 | perlopenbsd Perl заметки для OpenBSD
247 | perlos2 Perl заметки для OS/2
248 | perlos390 Perl заметки для OS/390
249 | perlos400 Perl заметки для OS/400
250 | perlplan9 Perl заметки для Plan 9
251 | perlqnx Perl заметки для QNX
252 | perlriscos Perl заметки для RISC OS
253 | perlsolaris Perl заметки для Solaris
254 | perlsymbian Perl заметки для Symbian
255 | perltru64 Perl заметки для Tru64
256 | perlvms Perl заметки для VMS
257 | perlvos Perl заметки для Stratus VOS
258 | perlwin32 Perl заметки для Windows
259 |
260 | =for buildtoc flag -r
261 |
262 | =head2 Заглушки для удаленных документов
263 |
264 | perlboot
265 | perlbot
266 | perltodo
267 | perltooc
268 | perltoot
269 |
270 | =for buildtoc __END__
271 |
272 | На Unix-подобных системах, эти файлы, как правило, также будет доступны как страницы руководств для использования с программой F .
273 |
274 | Некоторая документация не доступна в виде man страниц, так что, если перекрестные ссылки не найдены в мане, то попробуйте их найти с помощью L. Perldoc также предоставляет документацию по функциям (с опцией B<-f>). См. C (или C или C)
275 | для других полезных вариантов, которые L может предложить.
276 |
277 | В общем, если что-то странное пошло не так с вашей программой, и вы не уверены, где вы должны искать помощи, попробуйте поставить в начале программы
278 | B и B. Они будут часто указывают именно туда, где беда.
279 |
280 | =head1 ОПИСАНИЕ
281 |
282 | Perl официально предназначается как Язык для Практического Извлечения и Создания отчетов, кроме случаев, когда это не так.
283 |
284 | Perl был первоначально языком, оптимизированным для анализа произвольных текстовых файлов, извлечения информации из этих текстовых файлов и печати отчетов на основе этой информации. Он быстро стал хорошим языком для многих систем управления задачами. По прошествии многих лет, Perl вырос в язык программирования общего назначения. Он широко используется для всего, от быстрых "однострочников" до полномасштабной разработки приложений.
285 |
286 | Язык больше предназначен для практических (простота в использовании, эффективность, полнота), чем для красивых решений (крошечность, элегантность, минимализм). Он сочетает в себе
287 | (по мнению автора, во всяком случае) некоторые из лучших особенностей B,
288 | B, и B, что делает его знакомым и простым, быстрым и удобным для пользователей Unix при решении досадных проблем. Его обще-целевые программистские возможности поддерживают процедурные, функциональные и объектно-ориентированных парадигмы программирования, что делает Perl удобным языком для долгого пути по крупным проектам, независимо от извилистости пути.
289 |
290 | Корни Perl в обработке текста не были забыты на протяжении многих лет.
291 | Он по-прежнему может похвастаться одними из самых мощных регулярных выражений, которые можно найти для любого текста, и поддержкой кодировки Unicode мирового класса. Он обрабатывает все виды структурированного текста, также, через обширную коллекцию расширений. Те библиотеки, которые лежат на CPAN, дают готовые решения поразительному множеству проблем. Когда они не ставят стандартные библиотеки, они крадут из лучших
292 | -- точно так же, как сам Perl.
293 |
294 | =head1 НАЛИЧИЕ
295 |
296 | Perl доступен для большинства операционных систем, в том числе практически для всех Unix-подобных платформ. См. L
297 | для ознакомления с перечнем.
298 |
299 | =head1 ОКРУЖЕНИЕ
300 |
301 | См. L.
302 |
303 | =head1 АВТОР
304 |
305 | Ларри Уолл , с помощью кучи других людей.
306 |
307 | Если ваша история успеха в Perl и отзывы могут быть полезны тем, кто использует Perl в своих приложениях, или, если вы хотите просто выразить свою благодарность Ларри и Perl разработчикам, пожалуйста, напишите perl-thanks@perl.org .
308 |
309 | =head1 ФАЙЛЫ
310 |
311 | "@INC" место расположение Perl библиотек
312 |
313 | =head1 СМОТРИТЕ ТАКЖЕ
314 |
315 | L<домашняя страница Perl|http://www.perl.org>
316 |
317 | L<статьи Perl (O'Reilly)|http://www.perl.com/>
318 |
319 | L
320 |
321 | L
322 |
323 | =head1 ДИАГНОСТИКА
324 |
325 | Использование прагмы C гарантирует, что все переменные объявлены правильно и предотвращает другие злоупотребления функциями Perl.
326 |
327 | Прагма C сообщает некоторую интересную диагностику. Можно также использовать B<-w> флаг, но его использование, как правило, не рекомендуется, потому что он будет применяться ко всему исполняемому коду Perl, в том числе к тому, который не под вашим контролем.
328 |
329 | См. L за разъяснениями всех сообщений диагностики Perl. Прагма C автоматически включает в Perl обычно краткие предупреждения и ошибки в длинные формы.
331 |
332 | Ошибки компиляции скажут вам номер строки ошибки, с указанием следующей лексемы(оператора) или тип маркера(оператора), который должен был быть рассмотрен.
333 | (В скрипте Perl передается через B<-e> ключи, каждый
334 | B<-e> считается одной линией.)
335 |
336 | Setuid сценарии имеют дополнительные ограничения, которые могут производить сообщения об ошибках, такие как "небезопасная зависимость". См. L.
337 |
338 | Мы упомянули, что вам обязательно надо рассмотреть возможность использования прагмы B ?
339 |
340 | =head1 ОШИБКИ
341 |
342 | Поведение, подразумеваемое прагмой B не является обязательным.
343 |
344 | Perl отдает на милость определения вашей машины различные операции, такие как приведение типов, atof(), и с плавающей точкой
345 | вывод с sprintf().
346 |
347 | Если ваш stdio требует искать eof(символ конца файла) между чтением и записью соответствующего потока, то это делает Perl. (Это не относится к sysread()
348 | и syswrite().)
349 |
350 | Хотя ни один из встроенных типов данных не имеет любые произвольные ограничения на размер (кроме памяти), есть еще несколько произвольных ограничений: данное имя переменной не может быть длиннее 251 символов. Номера строк отображаемой диагностики внутренней памяти как короткие целые, поэтому они ограничиваются максимум 65535 (большие числа обычно плохо пахнут).
351 |
352 | Вы можете отправить ваши сообщения об ошибке (не забудьте включить полную информацию о конфигурации в качестве вывода myconfig программы в Perl дереве исходных текстов, или посредством C) на perlbug@perl.org . Если вы преуспели в компиляции perl, the L сценарий в F подкаталоге может быть использован, чтобы помочь для написания письма с отчетом об ошибке.
353 |
354 | Perl на самом деле обозначает Патологически Эклектичный Мусорный Листер (Pathologically Eclectic Rubbish Lister), но никому не говорите, что я это сказал.
355 |
356 | =head1 ПРИМЕЧАНИЯ
357 |
358 | Perl девиз: "Есть больше чем один способ сделать это." "There's more than one way to do it." Дальнейшие пророчества остаются в качестве упражнения для читателя.
359 |
360 | Три основные достоинства программиста: лень, нетерпение, и высокомерие. См. Camel Book почему.
361 |
362 |
363 | =head1 ПЕРЕВОДЧИКИ
364 |
365 | =over
366 |
367 | =item * Николай Мишин C<< >>
368 |
369 | =back
370 |
--------------------------------------------------------------------------------
/lib/POD2/RU/perlreref.pod:
--------------------------------------------------------------------------------
1 |
2 | =encoding utf8
3 |
4 | =head1 NAME/НАИМЕНОВАНИЕ
5 |
6 | perlreref - Справочник регулярных выражений Perl
7 |
8 | =head1 ОПИСАНИЕ
9 |
10 | Это краткий справочник по регулярным выражениям Perl.
11 | Для получения полной информации см L и L, а также
12 | как раздел L"СМОТРИТЕ ТАКЖЕ"> в этом документе.
13 |
14 | =head2 ОПЕРАТОРЫ
15 |
16 | C<=~> определяет к какой переменной применяется регкс.
17 | Если переменная отсутствует, то используется $_ .
18 |
19 | $var =~ /foo/;
20 |
21 | C определяет к какой переменной применяется регкс.
22 | и изменяет результат поиска на противоположный; он возвращает ложь,
23 | если поиск удался, и правду, если не удалось ничего найти.
24 |
25 | $var !~ /foo/;
26 |
27 | C ищет строку по шаблону поиска,
28 | применяя соответствующие флаги (опции).
29 |
30 | m Многострочный режим - ^ и $ находят внутренние строки
31 | s поиск как в Одной строке (Single line) - . найдет \n
32 | i Игнорировать регистр
33 | x Улучшение читабельности (eXtended legibility) - свободно ставим пробелы и комментарии
34 | p Сохраняет копии совпавшей строки -
35 | ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} будут определены.
36 | o скомпилирует шаблон Один раз
37 | g Глобально - все вхождения
38 | c не сбрасывать pos при неудачном поиске, при использовании/g
39 | a ограничивает \d, \s, \w и [:posix:] для поиска только ASCII символов
40 | aa (двойное a) также принуждает при флаге /i искать исключая перемешивание ASCII/non-ASCII
41 | l искать согласно текущей локали
42 | u искать согласно правилам Юникода
43 | d искать согласно обычным правилам, если что-то не указывает на Юникод
44 |
45 | Если 'шаблон' это пустая строка, то используется последний I<удачно> найденный регекс.
46 | Разделители отличные от '/' могут использоваться и для этого оператора и для следующих.
47 | Ведущую C можно опустить, если разделитель '/'.
48 |
49 | qr/шаблон/msixpodual позволяет сохранить регекс в переменной и передавать его во вне.
50 | Модификаторы для m// сохраняются в пределах регекса.
51 |
52 | Наконец, разделители по умолчанию C/> для поиска могут быть изменены на
53 | произвольные разделители, но тогда в начале должны быть буква C<'m'>:
54 | Замечание: если разделителем выступает сама буква C<'m'> то,
55 | перед ней, следует ставить пробел(спасибо zoffixznet за указание на эту ошибку):
56 |
57 | perl -E 'say "foo" =~ m mfoom ? "y" : "n"'
58 |
59 | C заменяет найденное в
60 | 'шаблоне' на 'заменитель'. Модификаторы для C с двумя дополнениями:
61 |
62 | e Выполняет 'заменитель' как выражение
63 | r Возвращает замену и оставляет исходную строку неизменной.
64 |
65 | 'e' может быть указан несколько раз. 'заменитель' интерпретируется
66 | как строка в двойных кавычках, пока она не заключена в одинарные (C<'>).
67 |
68 | Выражение C такое же как C но будет найдено только один раз.
69 | Нельзя использовать разделители или '|'. Можно сбросить с помощью reset().
70 |
71 | =head2 СИНТАКСИС
72 |
73 | \ Превращает следующий за обратной косой чертой символ в обычный
74 | . Найдет любой одиночный символ, кроме перевода строки (если не используется /s)
75 | ^ Находит начало строки (или линии, если используется /m )
76 | $ Находит конец строки (или линии, если используется /m )
77 | * Предыдущий элемент повторяется 0 или более раз
78 | + Предыдущий элемент повторяется один или более раз
79 | ? Предыдущий элемент повторяется 0 или 1 раз
80 | {...} Определяет диапазон повторений элемента, после которого он стоит
81 | [...] Соответствует любому из символов, содержащихся в скобках
82 | (...) Группирует подвыражения в $1, $2...
83 | (?:...) Группирует подвыражения без захвата
84 | | Ищет выражение или до или после этого знака (или, or)
85 | \g1 или \g{1}, \g2 ... Соответствует тексту из Энной группы
86 | \1, \2, \3 ... Соответствует тексту из Энной группы
87 | \g-1 или \g{-1}, \g-2 ... Соответствует тексту из Энной предыдущей группы
88 | \g{name} Именованная обратная ссылка
89 | \k Именованная обратная ссылка
90 | \k'name' Именованная обратная ссылка
91 | (?P=name) Именованная обратная ссылка (синтакс python)
92 |
93 | =head2 УПРАВЛЯЮЩИЕ ПОСЛЕДОВАТЕЛЬНОСТИ
94 |
95 | Эти работают в нормальных строках.
96 |
97 | \a Тревога (звуковой сигнал)
98 | \e Клавиша ESC (Escape)
99 | \f Перевод формата (Formfeed)
100 | \n Новая строка
101 | \r Возврат каретки
102 | \t Табуляция
103 | \037 Символы, представляющие 3 восьмеричные цифры, максимально \777
104 | \o{2307} Символы, представляющие восьмеричные цифры, без ограничений
105 | \x7f Символы, представляющие 2 шестнадцатеричные цифры, максимально \xFF
106 | \x{263a} Символы, представляющий шестнадцатеричные цифры, без ограничений
107 | \cx Control-x
108 | \N{name} Именованный символ Юникода или последовательность символов
109 | \N{U+263D} Символ Юникода в шестнадцатеричном формате
110 |
111 | \l Следующий символ в нижнем регистре
112 | \u Следующий символ в верхнем регистре
113 | \L Нижний регистр до \E
114 | \U Верхний регистр до \E
115 | \F Возвращает регистронезависимое представление до \E
116 | \Q Отключает действие метасиволов в шаблоне до \E
117 | \E Завершение модификации
118 |
119 | Для заглавного регистра , см LЗаглавныйРегистр>.
120 |
121 | Эта одна последовательность работает по-другому по сравнению с обычными строками:
122 |
123 | \b Утверждение, не backspace, за исключением символов класса
124 |
125 | =head2 КЛАССЫ СИМВОЛОВ
126 |
127 | [amy] Найдет 'a', 'm' или 'y'
128 | [f-j] Тире указывает "диапазон"
129 | [f-j-] Тире с эскейпом (обратным слешем) или вначале или конце обозначает простое 'тире'
130 | [^f-j] Знак крышки указывает, "найти любой сивмол _кроме_ этих"
131 |
132 | Следующие последовательности (за исключением C<\N>) работают внутри или без класса символов.
133 | Первые шесть локали, все работают с Unicode. См. L
134 | и L для подробной информации.
135 |
136 | \d Цифра
137 | \D Не цифра
138 | \w Словесный символ
139 | \W Несловесный символ
140 | \s Пробельный символ
141 | \S Непробельный символ
142 | \h Горизонтальный пробел
143 | \H Негоризонтальный пробел
144 | \N Не новая строка (когда не следует за '{NAME}';
145 | не действует в классе символов; эквивалентен [^\n]; это
146 | как '.' без модификатора /s )
147 | \v Вертикальный пробел
148 | \V Невертикальный пробел
149 | \R Универсальная новая строка (?>\v|\x0D\x0A)
150 |
151 | \C Найдет байт (с Юникодом, '.' найдет символ)
152 | \pP Найдет свойство (Юникодное) с P-именем
153 | \p{...} Найдет Юникодное свойство с именем длиннее 1 символа
154 | \PP Найдет не-P
155 | \P{...} Найдет отсутвие Юникодного свойства с именем длиннее 1 символа
156 | \X Найдет Юникодный расширенный графема кластер
157 |
158 | символьные классы POSIX и их Unicode и Perl эквиваленты :
159 |
160 | ASCII- Full-
161 | POSIX range range backslash
162 | [[:...:]] \p{...} \p{...} sequence Description
163 |
164 | -----------------------------------------------------------------------
165 | alnum PosixAlnum XPosixAlnum Алфавитный символ плюс Цифра
166 | alpha PosixAlpha XPosixAlpha Алфавитный символ
167 | ascii ASCII Любой ASCII символ
168 | blank PosixBlank XPosixBlank \h Горизонтальный пробел;
169 | полный спектр также
170 | записывается как
171 | \p{HorizSpace} (GNU
172 | расширение)
173 | cntrl PosixCntrl XPosixCntrl Знак Контрола
174 | digit PosixDigit XPosixDigit \d Десятичные цифры
175 | graph PosixGraph XPosixGraph Алфавитный символ плюс Пунктуация
176 | lower PosixLower XPosixLower Строчные буквы
177 | print PosixPrint XPosixPrint Graph плюс Print, без
178 | нескольких Control символов
179 | punct PosixPunct XPosixPunct Пунктуация и Символы
180 | в ASCII-диапазоне; просто
181 | пунктуация за ее пределами
182 | space PosixSpace XPosixSpace [\s\cK]
183 | PerlSpace XPerlSpace \s Perl пробельный символ
184 | upper PosixUpper XPosixUpper Прописные буквы (в верхнем регисте)
185 | word PosixWord XPosixWord \w Цифры, буквы + знаки Юникода +
186 | соединители, такие как '_'
187 | (Perl расширение)
188 | xdigit ASCII_Hex_Digit XPosixDigit Шестнадцатиричные цифрв,
189 | ASCII-диапазон
190 | [0-9A-Fa-f]
191 |
192 | Кроме того, различные синонимы такие как C<\p{Alpha}> для C<\p{XPosixAlpha}>; все перечисленные
193 | в L
194 |
195 | Внутри класса символов:
196 |
197 | POSIX traditional Unicode
198 | [:digit:] \d \p{Digit}
199 | [:^digit:] \D \P{Digit}
200 |
201 | =head2 ЯКОРЯ
202 |
203 | Все утверждения нулевой ширины.
204 |
205 | ^ Найдет начало строки (или линии при /m)
206 | $ Найдет конец строки (или линии при /m) или перед новой строкой
207 | \b Найдет границу слова (между \w и \W)
208 | \B Найдет за исключением границы слова (между \w и \w или \W и \W)
209 | \A Найдет начало строки (независимо от /m)
210 | \Z Найдет конец строки (перед вероятным знаком новой строки)
211 | \z Найдет абсолютный конец строки
212 | \G Найдет, где остановился предыдущий m//g
213 | \K Сохраняет найденный материал слева от \K, не включая его в $&
214 |
215 | =head2 ПОВТОРИТЕЛИ (КВАНТИФИКАТОРЫ)
216 |
217 | Повторители жадные по умолчанию и захватывают B<длиннейшую> часть слева.
218 |
219 | Максима Минимал Притяжатель Допустимый диапазон
220 | ------- ------- ---------- -------------
221 | {n,m} {n,m}? {n,m}+ Совпадение по кр мере n раз
222 | но не более, чем m раз
223 | {n,} {n,}? {n,}+ По крайней мере n раз
224 | {n} {n}? {n}+ Должен найти ровно n раз
225 | * *? *+ 0 или более раз (также как {0,})
226 | + +? ++ 1 или более раз (также как {1,})
227 | ? ?? ?+ 0 или 1 раз (также как {0,1})
228 |
229 | Притяжательные формы (новое в Perl 5.10) предотвращают возвращение: то,что получает
230 | подобранный образцом с притяжательным повторителем не будет возвращено
231 | , даже если это заставляет терпеть неудачу весь поиск.
232 |
233 | Существует не повторитель C<{,n}>. Это интерпретируется как строковая константа.
234 |
235 | =head2 РАСШИРЕННЫЕ КОНСТРУКЦИИ
236 |
237 | (?#text) Комментария
238 | (?:...) Группировка без захвата (кластеризации)
239 | (?pimsx-imsx:...) Включить/отключить опцию (в соответствии с модификатором m//)
240 | (?=...) Утверждение положительного просмотра вперед нулевой ширины
241 | (?!...) Утверждение отрицательного просмотра вперед нулевой ширины
242 | (?<=...) Утверждение положительного просмотра назад нулевой ширины
243 | (?...) Возьмите то, что мы можем, запрещает использование поиска с возвратом
245 | (?|...) Сброс ветвления
246 | (?...) Именованный захват
247 | (?'name'...) Именованный захват
248 | (?P...) Именованный захват (синтакс питона)
249 | (?{ code }) Встроенный код, возвращаемое значение становится $^R
250 | (??{ code }) Динамический регекс, возвращаемое значение используется как регекс
251 | (?N) Рекурсивно в подобразец номер N
252 | (?-N), (?+N) Рекурсивно в N-нный предыдущий/следующий подобразец
253 | (?R), (?0) Рекурсия сначала всего шаблона
254 | (?&name) Рекурсия в именованный подобразец
255 | (?P>name) Рекурсия в именованный подобразец (питоновский синтакс)
256 | (?(условие)да|нет)
257 | (?(условие)да) Условное выражение, где "условие" может быть:
258 | (?=pat) смотреть вперед
259 | (?!pat) отрицание смотра вперед
260 | (?<=pat) смотреть назад
261 | (?) именованный подшаблон что-то нашел
264 | ('name') именованный подшаблон что-то нашел
265 | (?{code}) условие из кода
266 | (R) правда, если рекурсия
267 | (RN) правда, если рекурсия в N-ном подшаблоне
268 | (R&name) правда, если рекурсия в именованном подшаблоне
269 | (DEFINE) всегда имеет значение ложь, разрешается не no шаблону
270 |
271 | =head2 ПЕРЕМЕННЫЕ
272 |
273 | $_ Переменная для использования по умолчанию
274 |
275 | $` Все перед найденной строкой
276 | $& Найденная строка
277 | $' Все после найденной строки
278 |
279 | ${^PREMATCH} Все перед найденной строкой
280 | ${^MATCH} Найденная строка
281 | ${^POSTMATCH} Все после найденной строки
282 |
283 | Использование C<$`>, C<$&> или C<$'> будет замедлять использование B<всех> регексов
284 | в рамках программы. Посмотрите в L на C<@->
285 | чтобы увидеть эквивалент выражения, которое не вызывают замедления.
286 | Смотрите также L. Начиная с Perl 5.10, вы
287 | можно также использовать эквивалентные переменные C<${^PREMATCH}>, C<${^MATCH}>
288 | и C<${^POSTMATCH}>, но, чтобы их определить, нужно
289 | в регулярном выражении указать модификатор C (preserve сохранить).
290 |
291 | $1, $2 ... удерхивает X-ное захваченное выражение
292 | $+ Последнее найденное скобочное выражение
293 | $^N Сохраняет самый близкое захваченное выражение
294 | $^R Сохраняет результат последнего (?{...}) выражения
295 | @- Смещение от начала группировки. $-[0] содержит найденное выражение целиком
296 | @+ Смещение от конца группировки. $+[0] сохраняет остаток от найденного
297 | %+ Именованные захваченные группы
298 | %- Именованные захваченные группы, как ссылка на массив
299 |
300 | Захваченные группы пронумеровываются согласно их I<открытой> скобке.
301 |
302 | =head2 ФУНКЦИИ
303 |
304 | lc Строку в нижний регистр
305 | lcfirst В нижний регистр первый символ строки
306 | uc Строку в верхний регистр
307 | ucfirst В верхний регистр первый символ строки
308 | fc Сделать регистронезависимую строку (для сравнения)
309 |
310 | pos Вернуть или установить текущее положение поиска
311 | quotemeta Квотировать метасимволы
312 | reset Сбросить статус ?шаблона?
313 | study Анализировать строку для оптимизации поиска
314 |
315 | split Использование регекса для разбиения строки на части
316 |
317 | Первые пять из них, как escape-последовательности C<\L>, C<\l>,
318 | C<\U>, C<\u>, и C<\F>. Для заголовочного регистра, см L; Для
319 | Регистронезависимого, см L.
320 |
321 | =head2 ТЕРМИНОЛОГИЯ
322 |
323 | =head3 Titlecase
324 |
325 | В концепции Unicode он чаще всего равен верхнему регистру, но для
326 | некоторых символов, таких как немецкий "sharp s"(резкое s - ß) это не так.
327 |
328 | =head3 Foldcase
329 |
330 | Юникодная форма полезна при сравнении строк независимо от регистра,
331 | но некоторые символы имеют разветвленную систему сопоставления регистра один ко многим. Прежде всего
332 | вариант нижнего регистра.
333 |
334 | =head1 АВТОР
335 |
336 | Iain Truskett. Обновлено портировщиками Perl 5.
337 |
338 | Этот документ может распространяться на тех же условиях, как и сам Perl.
339 |
340 | =head1 СМОТРИТЕ ТАКЖЕ
341 |
342 | =over 4
343 |
344 | =item *
345 |
346 | L учебник по регулярным выражениям.
347 |
348 | =item *
349 |
350 | L для быстрого изучения.
351 |
352 | =item *
353 |
354 | L для более подробной информации.
355 |
356 | =item *
357 |
358 | L дополнительные сведения о переменных.
359 |
360 | =item *
361 |
362 | L