argra****@users*****
argra****@users*****
2014年 11月 11日 (火) 19:29:43 JST
Index: docs/perl/5.18.1/perldata.pod diff -u docs/perl/5.18.1/perldata.pod:1.2 docs/perl/5.18.1/perldata.pod:1.3 --- docs/perl/5.18.1/perldata.pod:1.2 Sun Sep 28 05:21:28 2014 +++ docs/perl/5.18.1/perldata.pod Tue Nov 11 19:29:43 2014 @@ -257,6 +257,8 @@ =head2 Identifier parsing X<identifiers> +(識別子のパース) + =begin original Up until Perl 5.18, the actual rules of what a valid identifier @@ -273,18 +275,14 @@ =end original -Up until Perl 5.18, the actual rules of what a valid identifier -was were a bit fuzzy. However, in general, anything defined here should -work on previous versions of Perl, while the opposite -- edge cases -that work in previous versions, but aren't defined here -- probably -won't work on newer versions. -As an important side note, please note that the following only applies -to bareword identifiers as found in Perl source code, not identifiers -introduced through symbolic references, which have much fewer -restrictions. -If working under the effect of the C<use utf8;> pragma, the following -rules apply: -(TBT) +Perl 5.18 まで、何が正当な識別子かに関する実際の規則は少し曖昧でした。 +しかし、一般的に、ここで定義されたものは過去のバージョンの Perl でも +動作するはずです; しかし、逆 -- 以前のバージョンで動作していたエッジケースで +ここで定義されていないもの -- はおそらく新しいバージョンでは動作しません。 +重要な補足として、後述するものは Perl ソースコードに現れる裸の識別子のみに +適用されるもので、遥かに制限の少ないシンボリックリファレンスで導入される +識別子には適用されないことに注意してください。 +C<use utf8;> プラグマが有効な場合、以下の規則が適用されます: / (?[ ( \p{Word} & \p{XID_Start} ) + [_] ]) \p{XID_Continue}* /x @@ -295,9 +293,8 @@ =end original -If not under C<use utf8>, the source is treated as ASCII + 128 extra -controls, and identifiers should match -(TBT) +C<use utf8> が有効でない場合、ソースは ASCII + 128 の追加の制御文字として +扱われ、識別子は以下にマッチしなければなりません / (?aa) (?!\d) \w+ /x @@ -308,9 +305,7 @@ =end original -That is, any word character in the ASCII range, as long as the first -character is not a digit. -(TBT) +つまり、 ASCII の範囲の任意の単語文字で、先頭が数字でないものです。 =begin original @@ -323,13 +318,13 @@ =end original -There are two package separators in Perl: A double colon (C<::>) and a single -quote (C<'>). Normal identifiers can start or end with a double colon, and -can contain several parts delimited by double colons. -Single quotes have similar rules, but with the exception that they are not -legal at the end of an identifier: That is, C<$'foo> and C<$foo'bar> are -legal, but C<$foo'bar'> are not. -(TBT) +Perl には二つのパッケージセパレータがあります: コロン二つ (C<::>) と +シングルクォート (C<'>) です。 +通常の識別子はコロン二つで開始または終了でき、コロン二つで区切られた +複数の部分を含むことができます。 +シングルクォートは似たような規則を持ちますが、識別子の末尾に付けるのは +不正であるという例外があります: つまり、C<$'foo> と C<$foo'bar> は正当ですが、 +C<$foo'bar'> は違います。 =begin original @@ -343,14 +338,12 @@ =end original -Finally, if the identifier is preceded by a sigil -- -More so, normal identifiers can start or end with any number -of double colons (::), and can contain several parts delimited -by double colons. -And additionally, if the identifier is preceded by a sigil -- -that is, if the identifier is part of a variable name -- it -may optionally be enclosed in braces. -(TBT) +最後に、識別子の先頭に印 (sigil) が付いている場合 -- +なおさら、通常の識別子は任意の数の二つのコロンで開始または終了でき、 +コロン二つで区切られた複数の部分を含むことができます。 +そしてさらに、識別子の先頭に印 (sigil) が付いている場合 -- つまり、 +識別子が変数名の一部の場合 -- 識別子はオプションで中かっこで囲むことも +できます。 =begin original @@ -360,10 +353,9 @@ =end original -While you can mix double colons with singles quotes, the quotes must come -after the colons: C<$::::'foo> and C<$foo::'bar> are legal, but C<$::'::foo> -and C<$foo'::bar> are not. -(TBT) +コロン二つとシングルクォートを混ぜることは出来ますが、シングルクォートは +コロンの後に来なければなりません: C<$::::'foo> と C<$foo::'bar> は正当ですが、 +C<$::'::foo> と C<$foo'::bar> は違います。 =begin original @@ -371,8 +363,7 @@ =end original -Put together, a grammar to match a basic identifier becomes -(TBT) +まとめると、基本識別子にマッチングする文法は / (?(DEFINE) @@ -410,30 +401,45 @@ =end original -Meanwhile, special identifiers don't follow the above rules; For the most -part, all of the identifiers in this category have a special meaning given -by Perl. Because they have special parsing rules, these generally can't be -fully-qualified. They come in four forms: -(TBT) +一方、特殊識別子はこの規則に従いません; ほとんどの部分において、このカテゴリの +全ての識別子は Perl によって特別な意味を与えられています。 +これらは特別なパース規則を持つので、一般的に完全に定義できません。 +これらには四つの形式があります: =over =item A sigil, followed solely by digits matching \p{POSIX_Digit}, like C<$0>, C<$1>, or C<$10000>. +(印に引き続いて C<$0>, C<$1>, C<$10000> のように \p{POSIX_Digit} に +マッチングするもの) + =item A sigil, followed by either a caret and a single POSIX uppercase letter, like C<$^V> or C<$^W>, or a sigil followed by a literal control character matching the C<\p{POSIX_Cntrl}> property. Due to a historical oddity, if not running under C<use utf8>, the 128 extra controls in the C<[0x80-0xff]> range may also be used in length one variables. +(印に引き続いて C<$^V> や C<$^W> のようにキャレットと単一の POSIX 大文字、 +または印に引き続いて C<\p{POSIX_Cntrl}> 特性にマッチングするリテラルな +制御文字。歴史的なおかしなことにより、C<use utf8> で実行されていない場合、 +C<[0x80-0xff]> の範囲の 128 の追加の制御文字も 1 文字変数として +使われるかもしれません。) + =item Similar to the above, a sigil, followed by bareword text in brackets, where the first character is either a caret followed by an uppercase letter, or a literal control, like C<${^GLOBAL_PHASE}> or C<${\7LOBAL_PHASE}>. +(前述と同様に、印に引き続いて中かっこで囲まれた裸の単語; その最初の文字は +C<${^GLOBAL_PHASE}> や C<${\7LOBAL_PHASE}> のようにキャレットに引き続いて +大文字かリテラルな制御文字。) + =item A sigil followed by a single character matching the C<\p{POSIX_Punct}> property, like C<$!> or C<%+>. +(C<$!> や C<%+> のように、印に引き続いて C<\p{POSIX_Punct}> 特性に +マッチングする単一の文字。) + =back =head2 Context