argra****@users*****
argra****@users*****
2012年 6月 14日 (木) 17:39:39 JST
Index: docs/perl/5.10.1/perldiag.pod diff -u docs/perl/5.10.1/perldiag.pod:1.1 docs/perl/5.10.1/perldiag.pod:1.2 --- docs/perl/5.10.1/perldiag.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perldiag.pod Thu Jun 14 17:39:39 2012 @@ -3367,9 +3367,8 @@ =end original -This threshold can be changed from 100, by recompiling the F<perl> binary, -setting the C pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value. -(TBT) +この閾値は、C プリプロセッサマクロ C<PERL_SUB_DEPTH_WARN> を希望の値に +設定して F<perl> バイナリを再コンパイルすることで、100 から変更できます。 =item defined(@array) is deprecated @@ -5214,9 +5213,8 @@ (S deprecated, syntax) 過去のバージョンで非推奨とされた特殊変数 C<$*> は、 5.9.0 で削除され、もはやサポートされません。 -In previous versions of perl the use of -C<$*> enabled or disabled multi-line matching within a string. -(TBT) +以前のバージョンの perl では C<$*> を使うことによって文字列中の複数行 +マッチングの有効無効を切り替えていました。 =begin original @@ -5226,10 +5224,10 @@ =end original -Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp -modifiers. (In older versions: when C<$*> was set to a true value then all regular -expressions behaved as if they were written using C</m>.) -(TBT) +C<$*> を使う代わりに、C</m> (とおそらく C</s>) 正規表現修飾子を +使うべきです。 +(より古いバージョンでは: C<$*> を真の値に設定すると全ての正規表現は +C</m> を使って書かれたかのように振る舞っていました。) =item $# is no longer supported @@ -6456,9 +6454,9 @@ =end original -(F) You specified a signal hook that was not recognized by Perl. Currently, Perl -accepts C<__DIE__> and C<__WARN__> as valid signal hooks -(TBT) +(F) Perl が認識できないシグナルフックを指定しました。 +現在のところ、Perl は有効なシグナルフックとして +C<__DIE__> と C<__WARN__> を受け付けます。 =item No such pipe open @@ -7646,9 +7644,8 @@ =end original -(P) The sv_chop() routine was passed a position that is not within the -scalar's string buffer. -(TBT) +(P) sv_chop() ルーチンは、スカラの文字列バッファ内でない位置を +渡されました。 =item panic: sv_insert @@ -8643,7 +8640,6 @@ =end original (F) 正規表現中に C<\k'NAME'> や C<< \k<NAME> >> のようなものを使いましたが、 -but there is no corresponding named capturing parentheses such C<(?'NAME'...)> や C<(?<NAME>...) のような、対応する名前付き捕捉かっこが ありません。 前方参照と定義の両方において、名前のスペルが正しいかどうか @@ -9363,10 +9359,9 @@ =end original -(F) You should not use the C<~~> operator on an object that does not -overload it: Perl refuses to use the object's underlying structure for -the smart match. -(TBT) +(F) オーバーロードしていないオブジェクトに対して C<~~> 演算子を +使うべきではありません: Perl はスマートマッチング時にオブジェクトの +基礎となる構造を使うことを拒否します。 =item sort is now a reserved word @@ -10075,11 +10070,11 @@ =end original -The B<-C> option only works if it is specified on the command line as well -(with the same sequence of letters or numbers following). Either specify -this option on the command line, or, if your system supports it, make your -script executable and run it directly instead of passing it to perl. -(TBT) +B<-C> オプションは、コマンドラインも (以下と同じ文字と数値の並びで) +指定されたときにのみ動作します。 +このオプションをコマンドラインで指定するか、もしシステムが対応しているなら、 +スクリプトを perl に渡すのではなく、スクリプトを実行可能にして +直接実行してください。 =item Too late to run %s block @@ -11238,9 +11233,8 @@ =end original -(D deprecated, W syntax) The values you give to a format should be -separated by commas, not just aligned on a line. -(TBT) +(D deprecated, W syntax) フォーマットに与えた値は単に行で +並べるのではなくて、カンマで区切るべきです。 =item Use of chdir('') or chdir(undef) as chdir() deprecated @@ -12134,8 +12128,8 @@ =begin meta Translate: 吉村 寿人 <JAE00****@nifty*****> (5.000) -Update: Kentaro Shirakata <argra****@ub32*****> (5.6.1-) -Status: in progress +Update: SHIRAKATA Kentaro <argra****@ub32*****> (5.6.1-) +Status: completed =end meta Index: docs/perl/5.10.1/perlipc.pod diff -u docs/perl/5.10.1/perlipc.pod:1.1 docs/perl/5.10.1/perlipc.pod:1.2 --- docs/perl/5.10.1/perlipc.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perlipc.pod Thu Jun 14 17:39:39 2012 @@ -1296,12 +1296,12 @@ =end original -It is very easy to dead-lock a process using this form of open(), or -indeed any use of pipe() and multiple sub-processes. The above -example is 'safe' because it is simple and calls exec(). See -L</"Avoiding Pipe Deadlocks"> for general safety principles, but there -are extra gotchas with Safe Pipe Opens. -(TBT) +この形式の open() を使っているプロセスや、それどころか +あらゆる pipe() の使用と複数のサブプロセスをデッドロックさせるのは +とても簡単です。 +上述の例は、単純で、exec() を呼び出しているので「安全」です。 +一般的な安全のための原則については L</"Avoiding Pipe Deadlocks"> を +参照してください; しかし、Safe Pipe Opens については追加のコツがあります。 =begin original @@ -1311,10 +1311,9 @@ =end original -In particular, if you opened the pipe using C<open FH, "|-">, then you -cannot simply use close() in the parent process to close an unwanted -writer. Consider this code: -(TBT) +特に、C<open FH, "|-"> を使ってパイプを開くと、不要な書き込みを閉じるために +単に親プロセスで close() を使えません。 +このコードを考えます: $pid = open WRITER, "|-"; defined $pid or die "fork failed; $!"; @@ -1344,13 +1343,13 @@ =end original -In the above, the true parent does not want to write to the WRITER -filehandle, so it closes it. However, because WRITER was opened using -C<open FH, "|-">, it has a special behaviour: closing it will call -waitpid() (see L<perlfunc/waitpid>), which waits for the sub-process -to exit. If the child process ends up waiting for something happening -in the section marked "do something else", then you have a deadlock. -(TBT) +上述の例で、真の親は WRITER ファイルハンドルに書き込みたくないので、 +閉じます。 +しかし、WRITER は C<open FH, "|-"> を使って開かれているので、 +特殊な振る舞いをします: これを閉じると waitpid() (L<perlfunc/waitpid> を +参照してください) を呼び出し、サブプロセスが終了するのを待ちます。 +もし子プロセスが "do something else" とマークした部分で何かを +待っていると、デッドロックになります。 =begin original @@ -1360,10 +1359,9 @@ =end original -This can also be a problem with intermediate sub-processes in more -complicated code, which will call waitpid() on all open filehandles -during global destruction; in no predictable order. -(TBT) +これはまた、より複雑なコードでの中間のサブプロセスで問題になります; +これはグローバルな破壊の間に全ての開いているファイルハンドルに対して +waitpid() を呼び出します; 順序は予測不能です。 =begin original @@ -1372,9 +1370,8 @@ =end original -To solve this, you must manually use pipe(), fork(), and the form of -open() which sets one file descriptor to another, as below: -(TBT) +これを解決するために、以下のように、pipe(), fork(), ファイル記述子を +一つずつ設定する open() を手動で使わなければなりません: pipe(READER, WRITER); $pid = fork(); @@ -1440,6 +1437,8 @@ =head2 Avoiding Pipe Deadlocks +(パイプのデッドロックを避ける) + =begin original In general, if you have more than one sub-process, you need to be very @@ -1448,10 +1447,9 @@ =end original -In general, if you have more than one sub-process, you need to be very -careful that any process which does not need the writer half of any -pipe you create for inter-process communication does not have it open. -(TBT) +一般的に、複数のサブプロセスがあるなら、プロセス間通信のために +作ったパイプの書き込み側が必要のないプロセスではそれを開かないようにする +ためにとても慎重になる必要があります。 =begin original @@ -1462,11 +1460,10 @@ =end original -The reason for this is that any child process which is reading from -the pipe and expecting an EOF will never receive it, and therefore -never exit. A single process closing a pipe is not enough to close it; -the last process with the pipe open must close it for it to read EOF. -(TBT) +この理由は、パイプから読み込んで EOF を想定している子プロセスは決して +EOF を受け取ることはなく、従って決して終了しないからです。 +一つのプロセスがパイプを閉じるのは閉じるために十分ではありません; +EOF を読み込むには、パイプを開いた最後のプロセスが閉じる必要があります。 =begin original @@ -1478,12 +1475,12 @@ =end original -There are some features built-in to unix to help prevent this most of -the time. For instance, filehandles have a 'close on exec' flag (set -I<en masse> with Perl using the C<$^F> L<perlvar>), so that any -filehandles which you didn't explicitly route to the STDIN, STDOUT or -STDERR of a child I<program> will automatically be closed for you. -(TBT) +この時間のほとんどを避けるのを助ける unix に組み込みの機能が +いくつかあります。 +例えば、ファイルハンドルには 'close on exec' フラグ (Perl では C<$^F> +L<perlvar> を使って I<全体として> 設定します) があるので、明示的に +子 I<program> の STDIN, STDOUT, STDERR へ向いていなかったファイルハンドルを +自動的に閉じます。 =begin original @@ -1496,13 +1493,13 @@ =end original -So, always explicitly and immediately call close() on the writable end -of any pipe, unless that process is actually writing to it. If you -don't explicitly call close() then be warned Perl will still close() -all the filehandles during global destruction. As warned above, if -those filehandles were opened with Safe Pipe Open, they will also call -waitpid() and you might again deadlock. -(TBT) +従って、プロセスが実際に書いているのでない限り、全てのパイプの +書き込み側では常に明示的に直ちに close() を呼び出してください。 +もし明示的に close() を呼び出していないなら、Perl は未だにグローバルな +破壊時に全てのファイルハンドルに対して close() を呼び出します。 +先に警告したように、これらのファイルハンドルが Safe Pipe Open で +開かれているなら、これらは waitpid() を呼び出して、再びデッドロックの +可能性があります。 =head2 Bidirectional Communication with Another Process @@ -3431,8 +3428,8 @@ =begin meta Translate: KIMURA Koichi -Update: Kentaro Shirakata <argra****@ub32*****> (5.8.8-) -Status: in progress +Update: SHIRAKATA Kentaro <argra****@ub32*****> (5.8.8-) +Status: completed =end meta Index: docs/perl/5.10.1/perlpacktut.pod diff -u docs/perl/5.10.1/perlpacktut.pod:1.1 docs/perl/5.10.1/perlpacktut.pod:1.2 --- docs/perl/5.10.1/perlpacktut.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perlpacktut.pod Thu Jun 14 17:39:39 2012 @@ -1945,17 +1945,16 @@ =end original -Intel HEX is a file format for representing binary data, mostly for -programming various chips, as a text file. (See -L<http://en.wikipedia.org/wiki/.hex> for a detailed description, and -L<http://en.wikipedia.org/wiki/SREC_(file_format)> for the Motorola -S-record format, which can be unravelled using the same technique.) -Each line begins with a colon (':') and is followed by a sequence of -hexadecimal characters, specifying a byte count I<n> (8 bit), -an address (16 bit, big endian), a record type (8 bit), I<n> data bytes -and a checksum (8 bit) computed as the least significant byte of the two's -complement sum of the preceding bytes. Example: C<:0300300002337A1E>. -(TBT) +Intel HEX バイナリデータを表現するためのファイル形式で、ほとんどの場合 +様々なデータをテキストファイルとしてプログラミングするためのものです。 +(詳細な記述については L<http://en.wikipedia.org/wiki/.hex> を、 +同じテクニックを使って展開できる Motorola S-record 形式については +L<http://en.wikipedia.org/wiki/SREC_(file_format)> を参照してください。) +それぞれの行はコロン (':') で始まり、バイトカウント I<n> (8 ビット)、 +アドレス (16 ビット、ビッグエンディアン)、レコード型 (8 ビット)、 +I<n> バイトのデータ、そこまでのバイト列の合計の最下位バイトの 2 の補数で +表されるチェックサム (8 ビット)、からなる 16 進文字の並びが続きます。 +例: C<:0300300002337A1E>。 =begin original @@ -1966,11 +1965,10 @@ =end original -The first step of processing such a line is the conversion, to binary, -of the hexadecimal data, to obtain the four fields, while checking the -checksum. No surprise here: we'll start with a simple C<pack> call to -convert everything to binary: -(TBT) +このような行を処理するための最初のステップは、四つのフィールドを得るために +16 進データをバイナリに変換して、チェックサムを調べることです。 +ここには驚きはありません: 全てをバイナリに変換するための単純な +C<pack> 呼び出しから始めます: my $binrec = pack( 'H*', substr( $hexrec, 1 ) ); @@ -1983,11 +1981,11 @@ =end original -The resulting byte sequence is most convenient for checking the checksum. -Don't slow your program down with a for loop adding the C<ord> values -of this string's bytes - the C<unpack> code C<%> is the thing to use -for computing the 8-bit sum of all bytes, which must be equal to zero: -(TBT) +結果のバイト並びははチェックサムを計算するのに最も便利です。 +この文字列のバイトの C<ord> の値を加算するループでプログラムの速度を +落とすようなことをしないでください - C<unpack> の C<%> コードは +全てのバイトの 8 ビットの合計を計算するためのもので、これは 0 でなければ +なりません: die unless unpack( "%8C*", $binrec ) == 0; @@ -2001,12 +1999,12 @@ =end original -Finally, let's get those four fields. By now, you shouldn't have any -problems with the first three fields - but how can we use the byte count -of the data in the first field as a length for the data field? Here -the codes C<x> and C<X> come to the rescue, as they permit jumping -back and forth in the string to unpack. -(TBT) +最後に、四つのフィールドを取り出しましょう。 +ここまでで、最初の三つのフィールドを取り出すのには何の問題もないはずです - +しかし最初のフィールドにあるデータのバイトカウントをデータフィールドの +長さに使うにはどうすればいいでしょう? +ここで C<x> と C<X> が助けにやってきて、戻って文字列の 4 番目を +unpack できるようにします。 my( $addr, $type, $data ) = unpack( "x n C X4 C x3 /a", $bin ); @@ -2022,14 +2020,13 @@ =end original -Code C<x> skips a byte, since we don't need the count yet. Code C<n> takes -care of the 16-bit big-endian integer address, and C<C> unpacks the -record type. Being at offset 4, where the data begins, we need the count. -C<X4> brings us back to square one, which is the byte at offset 0. -Now we pick up the count, and zoom forth to offset 4, where we are -now fully furnished to extract the exact number of data bytes, leaving -the trailing checksum byte alone. -(TBT) +C<x> コードは、まだカウントは必要ではないので 1 バイト飛ばします。 +C<n> コードは 16 ビットビッグエンディアン整数アドレスを取得し、 +C<C> はレコード型を unpack します。 +データが始まる位置であるオフセット 4 に来て、カウントが必要です。 +C<X4> は 1 マス目、つまりオフセット 0 のバイトに戻ります。 +ここでカウントを取りだして、正確な数のデータを展開するために提供されている +オフセット 4 に移動して、末尾のチェックサムバイトだけを残します。 =head1 Packing and Unpacking C Structures @@ -2782,8 +2779,8 @@ =begin meta -Translate: Kentaro Shirakata <argra****@ub32*****> (5.8.8-) -Status: in progress +Translate: SHIRAKATA Kentaro <argra****@ub32*****> (5.8.8-) +Status: completed =end meta Index: docs/perl/5.10.1/perlrun.pod diff -u docs/perl/5.10.1/perlrun.pod:1.1 docs/perl/5.10.1/perlrun.pod:1.2 --- docs/perl/5.10.1/perlrun.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perlrun.pod Thu Jun 14 17:39:39 2012 @@ -818,11 +818,10 @@ =end original -B<Note:> Since perl 5.10.1, if the -C option is used on the #! line, it -must be specified on the command line as well, since the standard streams -are already set up at this point in the execution of the perl interpreter. -You can also use binmode() to set the encoding of an I/O stream. -(TBT) +B<注意:> perl 5.10.1 から、-C スイッチが #! 行で使われると、 +コマンドラインでも指定しなければなりません; なぜなら標準ストリームは +perl インタプリタ実行のこの地点で既に設定されているからです。 +I/O ストリームのエンコーディングの設定に binmode() も使えます。 =item B<-c> X<-c> @@ -926,6 +925,8 @@ 文字のリストの代わりに数字を指定することもできます (たとえば、B<-D14> は B<-Dtls> と等価です): +=begin original + 1 p Tokenizing and parsing (with v, displays parse stack) 2 s Stack snapshots (with v, displays all stacks) 4 l Context (loop) stack processing @@ -951,6 +952,33 @@ 4194304 A Consistency checks on internal structures 8388608 q quiet - currently only suppresses the "EXECUTING" message +=end original + + 1 p トークン化と構文解析 (v と併用されると、パーススタックの表示) + 2 s スタックの表示 (v と併用されると、全てのスタックの表示) + 4 l コンテキスト(ループ)スタックの処理 + 8 t 実行のトレース + 16 o メソッドとオーバーロードの解決 + 32 c 文字列/数値変換 + 64 P プロファイリング情報、-P のためのプリプロセッサコマンド、ソースファイル入力状態の表示 + 128 m メモリと SV の配置 + 256 f フォーマットの処理 + 512 r 正規表現の解析と実効 + 1024 x 構文トリーのダンプ + 2048 u 汚染チェック + 4096 U 非公式な、ユーザーハック (プライベートな、リリースされない利用法のために予約) + 8192 H ハッシュのダンプ -- values() の横取り + 16384 X スクラッチパッドの配置 + 32768 D 全消去 + 65536 S スレッド同期 + 131072 T トークン化 + 262144 R ダンプされた変数のリファレンスカウントを含む(-Dsのとき) + 524288 J DB パッケージの中では s,t,P デバッグコードを実行しない + 1048576 v 詳細: 他のフラグと組み合わせて使う + 2097152 C コピーオンライト + 4194304 A 内部構造の一貫性チェック + 8388608 q 静粛 - 現在のところ "EXECUTING" メッセージだけを抑制する + =begin original All these flags require B<-DDEBUGGING> when you compile the Perl @@ -1518,10 +1546,9 @@ =end original -Also note that C<< <> >> passes command line arguments to -L<perlfunc/open>, which doesn't necessarily interpret them as file names. -See L<perlop> for possible security implications. -(TBT) +また、C<< <> >> はコマンドライン引数を L<perlfunc/open> に渡し、これは +ファイル名として解釈する必要はないことに注意してください。 +可能性のあるセキュリティの影響については L<perlop> を参照してください。 =begin original @@ -1530,7 +1557,7 @@ =end original -以下にあげるのは、少なくとも 1 週間以上更新されていないァイルを効率的に +以下にあげるのは、少なくとも 1 週間以上更新されていないファイルを効率的に 削除するものです: find . -mtime +7 -print | perl -nle unlink @@ -2233,13 +2260,12 @@ =end original -All references to line numbers by the program (warnings, errors, ...) -will treat the #! line as the first line. -Thus a warning on the 2nd line of the program (which is on the 100th -line in the file) will be reported as line 2, and not as line 100. -This can be overridden by using the #line directive. -(See L<perlsyn/"Plain-Old-Comments-(Not!)">) -(TBT) +プログラムによる行番号への全ての参照 (警告、エラー…) は #! 行を +最初の行として扱います。 +従って、プログラムの 2 番目の行 (ファイルとしては 100 行目) での警告は +100 行目ではなく 2 行目として報告されます。 +これは #line 指示子を使って上書きできます。 +(L<perlsyn/"Plain-Old-Comments-(Not!)"> を参照してください。) =begin original @@ -2685,9 +2711,7 @@ =end original -The PERLIO environment variable is completely ignored when perl -is run in taint mode. -(TBT) +PERLIO 環境変数は、perl が汚染モードで実行されるときには完全に無視されます。 =item PERLIO_DEBUG X<PERLIO_DEBUG> @@ -2749,9 +2773,8 @@ =end original -The PERLLIB environment variable is completely ignored when perl -is run in taint mode. -(TBT) +PERLLIB 環境変数は、perl が汚染モードで実行されるときには完全に +無視されます。 =item PERL5DB X<PERL5DB> @@ -2774,9 +2797,8 @@ =end original -The PERL5DB environment variable only used when perl is started with -a bare B<-d> switch. -(TBT) +PERL5DB 環境変数は perl が裸の B<-d> スイッチで開始されたときにのみ +使われます。 =item PERL5DB_THREADED X<PERL5DB_THREADED> @@ -2839,11 +2861,10 @@ =end original -Before Perl 5.10.0 and 5.8.8, PERL5SHELL was not taint checked -when running external commands. It is recommended that -you explicitly set (or delete) C<$ENV{PERL5SHELL}> when running -in taint mode under Windows. -(TBT) +Perl 5.10.0 と 5.8.8 以前では、PERL5SHELL は外部コマンドを実行するときに +汚染チェックされませんでした。 +Windows 上で汚染モードで実行するときには、明示的に C<$ENV{PERL5SHELL}> を +設定(または削除)することを勧めます。 =item PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port) X<PERL_ALLOW_NON_IFS_LSP> @@ -3167,8 +3188,8 @@ =begin meta Translate: 吉村 寿人 <JAE00****@nifty*****> -Update: Kentaro Shirakata <argra****@ub32*****> -Status: in progress +Update: SHIRAKATA Kentaro <argra****@ub32*****> +Status: completed =end meta Index: docs/perl/5.10.1/perlsyn.pod diff -u docs/perl/5.10.1/perlsyn.pod:1.1 docs/perl/5.10.1/perlsyn.pod:1.2 --- docs/perl/5.10.1/perlsyn.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perlsyn.pod Thu Jun 14 17:39:39 2012 @@ -1181,11 +1181,11 @@ =end original -Most of the time, C<when(EXPR)> is treated as an implicit smart match of -C<$_>, i.e. C<$_ ~~ EXPR>. (See L</"Smart matching in detail"> for more -information on smart matching.) But when EXPR is one of the below -exceptional cases, it is used directly as a boolean: -(TBT) +ほとんどの場合で、C<when(EXPR)> は暗黙的な C<$_> へのスマートマッチング +(つまり C<$_ ~~ EXPR>) として扱われます。 +(スマートマッチングに関するさらなる情報については +L</"Smart matching in detail"> を参照してください。) +しかし、EXPR が以下の例外ケースの一つの場合は、直接真偽値として扱われます: =over 4 @@ -1252,9 +1252,8 @@ =end original -a filetest operator, with the exception of C<-s>, C<-M>, C<-A>, and C<-C>, -that return numerical values, not boolean ones. -(TBT) +真偽値ではなく数値を返す C<-s>, C<-M>, C<-A>, C<-C> を除く +ファイルテスト演算子。 =item * @@ -1264,8 +1263,7 @@ =end original -the C<..> and C<...> flip-flop operators. -(TBT) +フリップフロップ演算子 C<..> と C<...>。 =back @@ -1452,13 +1450,11 @@ スマートマッチングの振る舞いは引数にどのような型が使われたかに依存します。 振る舞いは以下の表によって決定されます: 適用される最初の行がマッチングの振る舞いを決定します -(which is thus mostly -determined by the type of the right operand)。 -Note that the smart match -implicitly dereferences any non-blessed hash or array ref, so the "Hash" -and "Array" entries apply in those cases. (For blessed references, the -"Object" entries apply.) -(TBT) +(従って普通は右側のオペランドの型で決定されます)。 +スマートマッチングは bless されていないハッシュや配列のリファレンスを +暗黙的にデリファレンスするので、これらの場合 "Hash" と "Array" の +エントリが適用されます。 +(bless されたリファレンスの場合、"Object" エントリが適用されます。) =begin original @@ -1468,27 +1464,61 @@ =end original -Note that the "Matching Code" column is not always an exact rendition. For -example, the smart match operator short-circuits whenever possible, but -C<grep> does not. -(TBT) +"Matching Code" の列は常に正確な説明というわけではないことに +注意してください。 +例えば、スマートマッチング演算子の短絡化はいつでも可能ですが、C<grep> は +そうではありません。 + +=begin original $a $b Type of Match Implied Matching Code ====== ===== ===================== ============= Any undef undefined !defined $a +=end original + + $a $b 暗黙に行われるマッチング マッチングコード + ====== ===== ======================== ============= + Any undef 未定義か !defined $a + +=begin original + Any Object invokes ~~ overloading on $object, or dies +=end original + + Any Object $object の ~~ オーバーロードを起動するか die する + +=begin original + Hash CodeRef sub truth for each key[1] !grep { !$b->($_) } keys %$a Array CodeRef sub truth for each elt[1] !grep { !$b->($_) } @$a Any CodeRef scalar sub truth $b->($a) +=end original + + Hash CodeRef sub が各キーで真か [1] !grep { !$b->($_) } keys %$a + Array CodeRef sub が各要素で真か [1] !grep { !$b->($_) } @$a + Any CodeRef サブルーチンが真か $b->($a) + +=begin original + Hash Hash hash keys identical (every key is found in both hashes) Array Hash hash slice existence grep { exists $b->{$_} } @$a Regex Hash hash key grep grep /$a/, keys %$b undef Hash always false (undef can't be a key) Any Hash hash entry existence exists $b->{$a} +=end original + + Hash Hash ハッシュキーが同じか (全てのキーが両方のハッシュにあるか) + Array Hash ハッシュスライスがあるか grep { exists $b->{$_} } @$a + Regex Hash ハッシュキー grep grep /$a/, keys %$b + undef Hash 常に偽 (undef はキーになれない) + Any Hash ハッシュエントリがあるか exists $b->{$a} + +=begin original + Hash Array hash slice existence grep { exists $a->{$_} } @$b Array Array arrays are comparable[2] Regex Array array grep grep /$a/, @$b @@ -1496,22 +1526,59 @@ 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: Any Num numeric equality $a == $b Num numish[4] numeric equality $a == $b undef Any undefined !defined($b) Any Any string equality $a eq $b +=end original + + Object Any $object の ~~ オーバーロードを起動するかフォールバック: + Any Num 数値比較 $a == $b + Num numish[4] 数値比較 $a == $b + undef Any 未定義か !defined($b) + Any Any 文字列比較 $a eq $b + +=begin original + 1 - empty hashes or arrays will match. 2 - that is, each element smart-matches the element of same index in the other array. [3] 3 - If a circular reference is found, we fall back to referential equality. 4 - either a real number, or a string that looks like a number +=end original + + 1 - 空のハッシュや配列はマッチングする。 + 2 - これは、各要素をもう一つの配列の同じ添え字の要素と + スマートマッチングする。 [3] + 3 - 循環参照が発見されると、参照の等価性にフォールバックする + 4 - 実数か、数値のように見える文字列 + =head3 Custom matching via overloading (オーバーロードを使ったマッチングのカスタマイズ) @@ -1535,10 +1602,9 @@ =end original -It should be noted that C<~~> will refuse to work on objects that -don't overload it (in order to avoid relying on the object's -underlying structure). -(TBT) +C<~~> は、(オブジェクトの基礎となる構造に依存するのを避けるために) +これをオーバーロードしていないオブジェクトに対しては動作しないことを +注意するべきです。 =begin original @@ -1547,9 +1613,8 @@ =end original -Note also that smart match's matching rules take precedence over -overloading, so if C<$obj> has smart match overloading, then -(TBT) +また、スマートマッチングのマッチングルールはオーバーロードより +優先順位が高いので、C<$obj> がスマートマッチングをオーバーロードしていて、 $obj ~~ X @@ -1561,10 +1626,9 @@ =end original -will not automatically invoke the overload method with X as an argument; -instead the table above is consulted as normal, and based in the type of X, -overloading may or may not be invoked. -(TBT) +としても X を引数としたオーバーロードメソッドは自動的には起動されません; +代わりに上述の表が通常通り適用され、X の型に基づいて、オーバーロード +メソッドは起動されたり起動されなかったりします。 =begin original @@ -1572,8 +1636,7 @@ =end original -See L<overload>. -(TBT) +L<overload> を参照してください。 =head3 Differences from Perl 6 @@ -1928,7 +1991,7 @@ Translate: KIMURA Koichi (5.005_03) Update: Kentaro Shirakata <argra****@ub32*****> (5.8.8-) -Status: in progress +Status: completed =end meta Index: docs/perl/5.10.1/perlunicode.pod diff -u docs/perl/5.10.1/perlunicode.pod:1.1 docs/perl/5.10.1/perlunicode.pod:1.2 --- docs/perl/5.10.1/perlunicode.pod:1.1 Thu Jun 7 03:04:52 2012 +++ docs/perl/5.10.1/perlunicode.pod Thu Jun 14 17:39:39 2012 @@ -220,16 +220,14 @@ =end original -Under byte semantics, when C<use locale> is in effect, Perl uses the -semantics associated with the current locale. Absent a C<use locale>, Perl -currently uses US-ASCII (or Basic Latin in Unicode terminology) byte semantics, -meaning that characters whose ordinal numbers are in the range 128 - 255 are -undefined except for their ordinal numbers. This means that none have case -(upper and lower), nor are any a member of character classes, like C<[:alpha:]> -or C<\w>. -(But all do belong to the C<\W> class or the Perl regular expression extension -C<[:^alpha:]>.) -(TBT) +バイトセマンティクスでは、C<use locale> が有効の場合、Perl は +現在のロケールに関連づけられたセマンティクスを使います。 +C<use locale> がない場合、Perl 現在のところ US-ASCII (または Unicode の +用語では Basic Latin) バイトセマンティクスを使います; つまり +番号 128 - 255 の範囲の文字は、その番号以外では未定義です。 +つまり、大文字小文字はなく、C<[:alpha:]> や C<\w> のような、 +どの文字クラスにも含まれません。 +(しかし C<\W> クラスや Perl の正規表現拡張 C<[:^alpha:]> には属します。) =begin original @@ -2528,9 +2526,8 @@ =end original -Note that utf8::downgrade() can fail if the string contains characters -that don't fit into a byte. -(TBT) +utf8::downgrade() は、バイトに収まらない文字を含む文字列の場合は +失敗することがあることに注意してください。 =head2 Using Unicode in XS @@ -2595,8 +2592,7 @@ C<uvchr_to_utf8(buf, chr)> は Unicode の文字符号位置を UTF-8 で エンコードされたの符号位置としてバッファに書き込みます。 そして、その UTF-8 バイトの後を指し示すポインタを返します。 -It works appropriately on EBCDIC machines. -(TBT) +これは EBCDIC のマシンでも適切に動作します。 =item * @@ -2611,8 +2607,7 @@ C<utf8_to_uvchr(buf, lenp)> はバッファから UTF-8 エンコードされたバイトを 読み出し、Unicode の文字符号位置と、オプションでその UTF-8 バイトシーケンスの長さを返します。 -It works appropriately on EBCDIC machines. -(TBT) +これは EBCDIC のマシンでも適切に動作します。 =item * @@ -2809,6 +2804,8 @@ =head2 Problems with characters whose ordinal numbers are in the range 128 - 255 with no Locale specified +(Locale が指定されないときの番号 128 - 255 の範囲の文字の問題) + =begin original Without a locale specified, unlike all other characters or code points, @@ -2833,26 +2830,23 @@ =end original -Without a locale specified, unlike all other characters or code points, -these characters have very different semantics in byte semantics versus -character semantics. -In character semantics they are interpreted as Unicode code points, which means -they are viewed as Latin-1 (ISO-8859-1). -In byte semantics, they are considered to be unassigned characters, -meaning that the only semantics they have is their -ordinal numbers, and that they are not members of various character classes. -None are considered to match C<\w> for example, but all match C<\W>. -Besides these class matches, -the known operations that this affects are those that change the case, -regular expression matching while ignoring case, -and B<quotemeta()>. -This can lead to unexpected results in which a string's semantics suddenly -change if a code point above 255 is appended to or removed from it, -which changes the string's semantics from byte to character or vice versa. -This behavior is scheduled to change in version 5.12, but in the meantime, -a workaround is to always call utf8::upgrade($string), or to use the -standard modules L<Encode> or L<charnames>. -(TBT) +ロケール指定がない場合、その他の文字や符号位置とは異なり、これらの文字は +バイトセマンティクスと文字セマンティクスでとても異なったセマンティクスです。 +文字セマンティクスでは Unicode 符号位置として解釈され、Latin-1 +(ISO-8859-1) として参照されます。 +バイトセマンティクスでは、未定義文字として扱われ、保持している +セマンティクスはその番号だけで、様々な文字クラスのメンバにはならないことを +意味します。 +例えばどれも C<\w> にはマッチングしませんが、全て C<\W> にマッチングします。 +これらのクラスのマッチングの他に、これが影響を与えることが知られている +操作は、大文字小文字の変更、大文字小文字を無視した正規表現マッチング、 +B<quotemeta()> です。 +これにより、符号位置 255 を超える文字が追加されたり削除されたりすると、 +文字列のセマンティックスがバイトから文字へ(またはその逆へ)突然 +変更されるという予想外の結果を引き起こすことがあります。 +この振る舞いは 5.12 で変更される予定ですが、今のところの回避方法は +常に utf8::upgrade($string) を呼び出すか標準モジュール L<Encode> や +L<charnames> を使うことです。 =head2 Interaction with Extensions @@ -3039,6 +3033,8 @@ =head2 Possible problems on EBCDIC platforms +(EBCDIC プラットフォームであり得る問題) + =begin original In earlier versions, when byte and character data were concatenated, @@ -3048,11 +3044,10 @@ =end original -In earlier versions, when byte and character data were concatenated, -the new string was sometimes created by -decoding the byte strings as I<ISO 8859-1 (Latin-1)>, even if the -old Unicode string used EBCDIC. -(TBT) +以前のバージョンでは、バイトデータと文字データを連結すると、 +古い Unicode 文字列が EBCDIC を使っていたとしても、新しい文字列は +バイト文字列を I<ISO 8859-1 (Latin-1)> としてデコードして +作成されることがありました。 =begin original @@ -3060,8 +3055,7 @@ =end original -If you find any of these, please report them as bugs. -(TBT) +これらのどれかを発見したら、どうかバグとして報告してください。 =head2 Porting code from perl-5.6.X @@ -3267,8 +3261,8 @@ =begin meta Translate: KIMURA Koichi (-5.8.5) -Update: Kentaro Shirakata <argra****@ub32*****> (5.10.0-) -Status: in progress +Update: SHIRAKATA Kentaro <argra****@ub32*****> (5.10.0-) +Status: completed =end meta