argra****@users*****
argra****@users*****
2013年 3月 8日 (金) 03:54:19 JST
Index: docs/perl/5.14.1/perlsyn.pod diff -u docs/perl/5.14.1/perlsyn.pod:1.2 docs/perl/5.14.1/perlsyn.pod:1.3 --- docs/perl/5.14.1/perlsyn.pod:1.2 Sat Aug 18 17:00:06 2012 +++ docs/perl/5.14.1/perlsyn.pod Fri Mar 8 03:54:18 2013 @@ -170,7 +170,7 @@ サブルーチンの宣言は、プログラムの後のほうにあるサブルーチン名を リスト演算子のように使うことを許します。 定義されていないサブルーチンの宣言を、C<sub name> と記述することで -宣言できるので、以下のようにできます。 +宣言できるので、以下のようにできます: X<subroutine, declaration> sub myname; @@ -187,7 +187,7 @@ =end original myname() 関数は、リスト演算子のように働くのであり、単項演算子としてでは -ないということに注意してください。 +ないということに注意してください; ですから、こういった場合に C<||> の代わりに C<or> を使うことには 注意してください。 しかし、サブルーチンを C<sub myname ($)> のように宣言しているのであれば、 @@ -616,7 +616,7 @@ C<continue> ブロックが存在する場合、 常に条件が再評価される直前に実行されます。 したがって、このブロックをループ変数のインクリメントのために -使うことができます。 +使うことができます; これは、ループがC<next>文を通して継続されるときでも実行されます。 =begin original @@ -771,7 +771,7 @@ =end original -ループ制御文は C<if> や C<unless> 中では動作しません。 +ループ制御文は C<if> や C<unless> 中では動作しません; なぜならそこはループではないからです。 しかし中かっこを二重にしてこれに対処することはできます。 @@ -815,8 +815,7 @@ =end original Perl の C 形式の C<for> ループは、対応する C<while> ループと同様に -動作します。 -つまり、以下のものは: +動作します; つまり、以下のものは: for ($i = 1; $i < 10; $i++) { ... @@ -935,8 +934,9 @@ =end original 読みやすさのために C<foreach> を、簡潔さのために C<for> を使うことが -できます(あるいは C シェルよりも Bourne シェルに親しんでいるのなら -C<for> の方が自然でしょう)。 +できます。 +(あるいは C シェルよりも Bourne シェルに親しんでいるのなら +C<for> の方が自然でしょう。) VAR が省略された場合には、C<$_> に値が設定されます。 X<$_> @@ -1086,9 +1086,10 @@ ブロックそれ自身は(ラベルが付いていようがついてなかろうが)一度だけ 実行されるループと、文法的には等価なものです。 このため、ブロックから脱出するためやブロックの再スタートのために -任意のループ制御文を使うことができます(これは C<eval{}>、C<sub{}>、 +任意のループ制御文を使うことができます。 +(これは C<eval{}>、C<sub{}>、 さらに一般的な認識とは異なり I<ループではない> C<do{}> ブロックに対しては -I<真ではない> ということに注意してください)。 +I<真ではない> ということに注意してください。) C<continue> ブロックは省略することができます。 =begin original @@ -1343,11 +1344,9 @@ =end original -更に、 -Perl inspects the operands of the binary boolean operators to -decide whether to use smart matching for each one by applying the above test to -the operands: -(TBT) +更に、Perl はオペランドに上述のテストを適用することで、それぞれに +スマートマッチングを使うかどうかを決定するために二項真偽値演算子の +オペランドを調べます: =over 4 @@ -1395,7 +1394,7 @@ =end original これらの規則は複雑に見えますが、普通はあなたが実行したい通りに実行します。 -例えば、以下のように書けます: +例えば: when (/^\d+$/ && $_ < 75) { ... } @@ -1406,9 +1405,8 @@ =end original -will be treated as a boolean match because the rules say both a regex match and -an explicit test on $_ will be treated as boolean. -(TBT) +これは真偽値マッチングとして扱われます; 規則では正規表現マッチングと +$_ への明示的なテストはどちらも真偽値として扱われるからです。 =begin original @@ -1427,9 +1425,9 @@ =end original -will use smart matching because only I<one> of the operands is a boolean; the -other uses smart matching, and that wins. -(TBT) +これはスマートマッチングを使います; オペランドの I<一つ> だけが +真偽値だからです; もう片方はスマートマッチングを使うので、こちらが +優先されます。 =begin original @@ -1438,7 +1436,6 @@ =end original さらに: -(TBT) when ([qw(foo bar)] || /^baz/) { ... } @@ -1448,8 +1445,7 @@ =end original -will use smart matching (only the first operand is considered), whereas -(TBT) +これはスマートマッチングを使います(最初のオペランドのみが考慮されます); 一方 when (/^baz/ || [qw(foo bar)]) { ... } @@ -1461,10 +1457,10 @@ =end original -will test only the regex, which causes both operands to be treated as boolean. -Watch out for this one, then, because an arrayref is always a true value, which -makes it effectively redundant. -(TBT) +これは正規表現のみがテストされ、両方のオペランドは真偽値として +扱われることになります。 +この場合、配列リファレンスは常に真の値なので、効率的に冗長になることに +注目してください。 =begin original @@ -1473,9 +1469,8 @@ =end original -Tautologous boolean operators are still going to be optimized away. Don't be -tempted to write -(TBT) +恒久的な真偽値演算子は最適化されて除去されます。 +以下のように書こうとしないでください when ('foo' or 'bar') { ... } @@ -1487,10 +1482,10 @@ =end original -This will optimize down to C<'foo'>, so C<'bar'> will never be considered (even -though the rules say to use a smart match on C<'foo'>). For an alternation like -this, an array ref will work, because this will instigate smart matching: -(TBT) +これは C<'foo'> に最適化されるので、C<'bar'> は (たとえ規則では C<'foo'> に +スマートマッチングを使うとなっていたとしても) 考慮されることはありません。 +このような代替としては、配列リファレンスは動作します; これは +スマートマッチングを使わせるからです: when ([qw(foo bar)] { ... } @@ -1502,10 +1497,9 @@ =end original -This is somewhat equivalent to the C-style switch statement's fallthrough -functionality (not to be confused with I<Perl's> fallthrough functionality - see -below), wherein the same block is used for several C<case> statements. -(TBT) +これはある意味 C スタイルの switch 文の次の条件への移動(fallthrough)機能と +等価です(I<Perl の> 次の条件への移動機能と混同しないでください - +後述します); 複数の C<case> 文に同じブロックが使われます。 =begin original @@ -1567,6 +1561,8 @@ =head3 Return value +(返り値) + =begin original When a C<given> statement is also a valid expression (e.g. @@ -1574,9 +1570,8 @@ =end original -When a C<given> statement is also a valid expression (e.g. -when it's the last statement of a block), it evaluates to : -(TBT) +C<given> が有効な式でもある(例えばブロックの最後の文である)場合、 +以下のように評価されます: =over 4 @@ -1588,8 +1583,7 @@ =end original -an empty list as soon as an explicit C<break> is encountered. -(TBT) +明示的な C<break> に遭遇した直後なら空リスト。 =item * @@ -1600,9 +1594,7 @@ =end original -the value of the last evaluated expression of the successful -C<when>/C<default> clause, if there's one. -(TBT) +もしあれば、成功した C<when>/C<default> 節で最後に評価された式の値。 =item * @@ -1613,9 +1605,7 @@ =end original -the value of the last evaluated expression of the C<given> block if no -condition is true. -(TBT) +どの条件も真でなければ C<given> ブロックで最後に評価された式の値。 =back @@ -1626,9 +1616,8 @@ =end original -In both last cases, the last expression is evaluated in the context that -was applied to the C<given> block. -(TBT) +最後の二つの場合、最後の式は適用された C<given> ブロックに適用された +コンテキストで評価されます。 =begin original @@ -1637,9 +1626,8 @@ =end original -Note that, unlike C<if> and C<unless>, failed C<when> statements always -evaluate to an empty list. -(TBT) +C<if> や C<unless> と異なり、失敗した C<when> 文は常に空リストに +評価されます。 my $price = do { given ($item) { when ([ 'pear', 'apple' ]) { 1 } @@ -1655,9 +1643,8 @@ =end original -Currently, C<given> blocks can't always be used as proper expressions. This -may be addressed in a future version of perl. -(TBT) +現在のところ、C<given> ブロックは常に適切な式として使うことはできません。 +これは将来のバージョンの perl に対処されるでしょう。 =head3 Switching in a loop @@ -1792,6 +1779,8 @@ undef Hash 常に偽 (undef はキーになれない) Any Hash ハッシュエントリがあるか exists $b->{$a} +=begin original + Hash Array hash keys intersection grep { exists $a->{$_} } @$b Array Array arrays are comparable[2] Regex Array array grep grep /$a/, @$b @@ -1799,10 +1788,27 @@ Any Array match against an array element[3] grep $a ~~ $_, @$b +=end original + + Hash Array ハッシュキー積集合 grep { exists $a->{$_} } @$b + Array Array 配列が比較可能[2] + Regex Array 配列 grep grep /$a/, @$b + undef Array 配列に undef があるか grep !defined, @$b + Any Array 配列要素に対するマッチング[3] + grep $a ~~ $_, @$b + +=begin original + Hash Regex hash key grep grep /$b/, keys %$a Array Regex array grep grep /$b/, @$a Any Regex pattern match $a =~ /$b/ +=end original + + Hash Regex ハッシュキー grep grep /$b/, keys %$a + Array Regex 配列 grep grep /$b/, @$a + Any Regex パターンマッチング $a =~ /$b/ + =begin original Object Any invokes ~~ overloading on $object, or falls back: @@ -1832,7 +1838,7 @@ 1 - 空のハッシュや配列はマッチングする。 2 - これは、各要素をもう一つの配列の同じ添え字の要素と スマートマッチングする。 [3] - 3 - 循環参照が発見されると、参照の等価性にフォールバックする + 3 - 循環参照が発見されると、参照の等価性にフォールバックする。 4 - 実数か、数値のように見える文字列 =head3 Custom matching via overloading @@ -1998,12 +2004,11 @@ これはサブルーチンであるとか C<foreach> ループのような 初期化を必要とするような構造へ飛び込むために使うことはできません。 また、最適化されて無くなってしまうような構造へ飛び込むこともできません。 -動的スコープの中以外のほとんどの場所へは、サブルーチンの -外も含めて移動することができます。 -しかし、通常は C<last> や C<die> のような別のやり方を使ったほうが -良いでしょう。 +動的スコープの中以外のほとんどの場所へは、サブルーチンの外も含めて +移動することができます; しかし、通常は C<last> や C<die> のような +別のやり方を使ったほうが良いでしょう。 Perl の作者は、未だかつてこの形式の C<goto> を使うことが -必要だと感じたことはありません(Perl の場合です。C の場合はまた別の話です)。 +必要だと感じたことはありません(Perl の場合です--C の場合はまた別の話です)。 =begin original @@ -2193,9 +2198,8 @@ にマッチしたものの C<$1> が次の行の行番号となり、省略することもできる C<$3> は(クォートありかなしで指定された)ファイル名となります。 -Note that -no whitespace may precede the C<< # >>, unlike modern C preprocessors. -(TBT) +最近の C プリプロセッサとは違って、C<< # >> の前に空白を置けないことに +注意してください。 =begin original @@ -2206,9 +2210,9 @@ =end original -行指示子にはかなり明らかな技があります。 -デバッガとプロファイラは、与えられたファイルの特定の行番号に対して現れた -最新のソース行のみを表示します。 +行指示子にはかなり明らかな技があります: デバッガとプロファイラは、 +与えられたファイルの特定の行番号に対して現れた最新のソース行のみを +表示します。 あとでデバッグしたいコードでは行番号の衝突が起きないように注意するべきです。 =begin original @@ -2251,7 +2255,7 @@ Translate: KIMURA Koichi (5.005_03) Update: SHIRAKATA Kentaro <argra****@ub32*****> (5.8.8-) -Status: in progress +Status: completed =end meta