Kentaro Shirakata
argra****@users*****
2007年 8月 4日 (土) 02:54:52 JST
Index: docs/perl/5.8.4/perlfunc.pod diff -u docs/perl/5.8.4/perlfunc.pod:1.2 docs/perl/5.8.4/perlfunc.pod:1.3 --- docs/perl/5.8.4/perlfunc.pod:1.2 Tue Jul 31 16:26:45 2007 +++ docs/perl/5.8.4/perlfunc.pod Sat Aug 4 02:54:51 2007 @@ -2288,12 +2288,10 @@ =end original -Returns a list with the same number of elements as the number of elements -for which deletion was attempted. Each element of that list consists of -either the value of the element deleted, or the undefined value. In scalar -context, this means that you get the value of the last element deleted (or -the undefined value if that element did not exist). -(TBT) +削除をしようとしたようその数と同じ数の要素からなるリストを返します。 +このリストの各要素は、削除された値か未定義値のどちらかです。 +スカラコンテキストでは、これは削除された最後の要素(または削除された要素が +ない場合は未定義値)を得ることを意味します。 %hash = (foo => 11, bar => 22, baz => 33); $scalar = delete $hash{foo}; # $scalar is 11 @@ -3259,11 +3257,11 @@ =end original -Note that as a very special case, an C<eval ''> executed within the C<DB> -package doesn't see the usual surrounding lexical scope, but rather the -scope of the first non-DB piece of code that called it. You don't normally -need to worry about this unless you are writing a Perl debugger. -(TBT) +とても特殊な場合として、C<DB> パッケージ内で C<eval ''> を実行すると、 +通常のレキシカルスコープではなく、これを呼び出した最初の非 DB コード片の +スコープになります。 +Perl デバッガを書いているのでない限り、普通はこれについて心配する必要は +ありません。 =item exec LIST @@ -6202,12 +6200,12 @@ =end original -If FILEHANDLE is an undefined scalar variable (or array or hash element) -the variable is assigned a reference to a new anonymous filehandle, -otherwise if FILEHANDLE is an expression, its value is used as the name of -the real filehandle wanted. (This is considered a symbolic reference, so -C<use strict 'refs'> should I<not> be in effect.) -(TBT) +FILEHANDLE が未定義のスカラ変数(または配列かハッシュの要素)の場合、その +変数は新しい無名ファイルハンドルへのリファレンスが代入され、 +さもなければ、もし FILEHANDLE が式なら、その値を求めている実際の +ファイルハンドルの名前として使います。 +(これはシンボリックリファレンスとして扱われるので、 +C<use strict 'refs'> の影響を I<受けません>。) =begin original @@ -6218,11 +6216,11 @@ =end original -If EXPR is omitted, the scalar variable of the same name as the -FILEHANDLE contains the filename. (Note that lexical variables--those -declared with C<my>--will not work for this purpose; so if you're -using C<my>, specify EXPR in your call to open.) -(TBT) +EXPR が省略された場合、FILEHANDLE と同じ名前のスカラ変数にファイル名が +入っています。 +(レキシカル変数 -- C<my> で宣言されたもの -- はこの用途には使えないことに +注意してください; 従って、C<my> を使っている場合は、open を呼び出すときに +EXPR を指定してください。) =begin original @@ -6422,14 +6420,13 @@ =end original -If you're running Perl on a system that distinguishes between text -files and binary files, then you should check out L</binmode> for tips -for dealing with this. The key distinction between systems that need -C<binmode> and those that don't is their text file formats. Systems -like Unix, Mac OS, and Plan 9, which delimit lines with a single -character, and which encode that character in C as C<"\n">, do not -need C<binmode>. The rest need it. -(TBT) +テキストファイルとバイナリファイルを区別するシステムで Perl を実行している +場合、これを扱うための小技のために L</binmode> をチェックするべきです。 +動作させているシステムで C<binmode> が必要か不要化を区別する鍵は、テキスト +ファイルの形式です。 +Unix, Mac OS, Plan 9 といった、行の境界を 1 文字で表現し、それが C では +C<"\n"> でエンコードされる場合、C<binmode> は不要です。 +それ以外では必要です。 =begin original @@ -6768,11 +6765,10 @@ =end original -The last example in each block shows the pipe as "list form", which is -not yet supported on all platforms. A good rule of thumb is that if -your platform has true C<fork()> (in other words, if your platform is -UNIX) you can use the list form. -(TBT) +それぞれのブロックの最後の例ではパイプを「リスト形式」にしていますが、 +これはまだ全てのプラットフォームで対応しているわけではなりません。 +よい経験則としては、もし実行しているプラットフォームで真の C<fork()> が +あれば(言い換えると、プラットフォームが UNIX なら) リスト形式が使えます。 =begin original @@ -7160,11 +7156,10 @@ =end original -Multi-interpreter environments can come to being either through the -fork() emulation on Windows platforms, or by embedding perl in a -multi-threaded application. The C<unique> attribute does nothing in -all other environments. -(TBT) +マルチインタプリタ環境は Windows プラットフォームでの fork() +エミュレーションか、マルチスレッドアプリケーションに組み込まれた perl で +起こり得ます。 +それ以外の環境では C<unique> 属性は何の意味もありません。 =begin original @@ -8625,12 +8620,10 @@ OFFSET を指定すると、文字列の先頭以外の場所から、 読み込みを行なうことができます。 -A negative OFFSET specifies -placement at that many characters counting backwards from the end of -the string. A positive OFFSET greater than the length of SCALAR -results in the string being padded to the required size with C<"\0"> -bytes before the result of the read is appended. -(TBT) +負の数の OFFSET を指定すると、文字列の最後から逆方向に何文字目かを数えます。 +SCALAR の長さよりも大きい、正の数の OFFSET を指定すると、文字列は +読み込みの結果が追加される前に、必要なサイズまで C<"\0"> のバイトで +パッディングされます。 =begin original @@ -9240,10 +9233,10 @@ =end original -You can also insert hooks into the import facility, by putting directly -Perl code into the @INC array. There are three forms of hooks: subroutine -references, array references and blessed objects. -(TBT) + @ INC 配列に直接 Perl コードを入れることで、インポート機能にフックを +挿入できます。 +3 種類のフックがあります: サブルーチンリファレンス、配列リファレンス、 +bless されたオブジェクトです。 =begin original @@ -9275,11 +9268,11 @@ =end original -If the hook is an array reference, its first element must be a subroutine -reference. This subroutine is called as above, but the first parameter is -the array reference. This enables to pass indirectly some arguments to -the subroutine. -(TBT) +フックが配列のリファレンスの場合、その最初の要素はサブルーチンへの +リファレンスでなければなりません。 +このサブルーチンは上述のように呼び出されますが、その最初の引数は +配列のリファレンスです。 +これによって、間接的にサブルーチンに引数を渡すことが出来ます。 =begin original @@ -9320,11 +9313,11 @@ =end original -If the hook is an object, it must provide an INC method, that will be -called as above, the first parameter being the object itself. (Note that -you must fully qualify the sub's name, as it is always forced into package -C<main>.) Here is a typical code layout: -(TBT) +フックがオブジェクトの場合、INC メソッドを提供している必要があります; +それが、最初の引数をオブジェクト自身として上述のように呼び出されます。 +(これは常にパッケージ C<main> に強制されるため、サブルーチン名は +完全修飾する必要があることに注意してください。) +以下は典型的なコードレイアウトです: # In Foo.pm package Foo; @@ -9344,8 +9337,6 @@ =end original -Note that these hooks are also permitted to set the %INC entry -corresponding to the files they have loaded. See L<perlvar/%INC>. これらのフックは、読み込まれるファイルに対応する %INC エントリを セットすることも許可することに注意してください。 L<perlvar/%INC> を参照してください。 @@ -10702,13 +10693,12 @@ =end original -Because C<< <=> >> returns C<undef> when either operand is C<NaN> -(not-a-number), and because C<sort> will trigger a fatal error unless the -result of a comparison is defined, when sorting with a comparison function -like C<< $a <=> $b >>, be careful about lists that might contain a C<NaN>. -The following example takes advantage of the fact that C<NaN != NaN> to -eliminate any C<NaN>s from the input. -(TBT) +C<< <=> >> はどちらかのオペランドが C<NaN> (not-a-number) のときに +C<undef> を返し、C<sort> は比較の結果が未定義値だと致命的エラーになるので、 +C<< $a <=> $b >> といった比較関数でソートする場合はリストに C<NaN> が +含まれないように注意してください。 +以下の例は 入力から C<NaN> を取り除くために C<NaN != NaN> という性質を +利用しています。 @result = sort { $a <=> $b } grep { $_ == $_ } @input; @@ -11199,10 +11189,10 @@ =end original -An explicit format parameter index, such as C<2$>. By default sprintf -will format the next unused argument in the list, but this allows you -to take the arguments out of order. Eg: -(TBT) +C<2$> のような、明示的なフォーマットパラメータへのインデックスです。 +デフォルトでは sprintf はリストの中で使われていない次の引数を +フォーマットしますが、これにより順番外の引数を取ることができます。 +つまり: printf '%2$d %1$d', 12, 34; # prints "34 12" printf '%3$d %d %1$d', 1, 2, 3; # prints "3 1 1" @@ -11267,9 +11257,8 @@ =end original -Put an asterisk C<*> before the C<v> to override the string to -use to separate the numbers: -(TBT) +アスタリスク C<*> を C<v> の前に置くと、数値を分けるために使われる文字列を +上書きします: printf "address is %*vX\n", ":", $addr; # IPv6 address printf "bits are %0*v8b\n", " ", $bits; # random bitstring @@ -11281,9 +11270,8 @@ =end original -You can also explicitly specify the argument number to use for -the join string using eg C<*2$v>: -(TBT) +また、C<*2$v> のように、連結する文字列として使う引数の番号を明示的に +指定できます。 printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":"; # 3 IPv6 addresses @@ -11298,11 +11286,9 @@ =end original -Arguments are usually formatted to be only as wide as required to -display the given value. You can override the width by putting -a number here, or get the width from the next argument (with C<*>) -or from a specified argument (with eg C<*2$>): -(TBT) +引数は、普通は値を表示するのに必要なちょうどの幅でフォーマットされます。 +ここに数値を置くか、(C<*> で)次の引数か(C<*2$> で)明示的に指定した引数で +幅を上書きできます。 printf '<%s>', "a"; # prints "<a>" printf '<%6s>', "a"; # prints "< a>" @@ -11503,8 +11489,7 @@ =end original -It can also be the case that long doubles and doubles are the same thing: -(TBT) +long double と double が同じ場合もあります: use Config; ($Config{doublesize} == $Config{longdblsize}) && @@ -12983,12 +12968,12 @@ =end original -Do not use tell() on a filehandle that has been opened using -sysopen(), use sysseek() for that as described above. Why? Because -sysopen() creates unbuffered, "raw", filehandles, while open() creates -buffered filehandles. sysseek() make sense only on the first kind, -tell() only makes sense on the second kind. -(TBT) +sysopen() を使って開いたファイルハンドルに tell() を使ってはいけません; +そのためには上述のように sysseek() を使ってください。 +なぜか? +なぜなら sysopen() はバッファリングされない、「生」のファイルハンドルを +作りますが、open() はバッファリングされるファイルハンドルを作ります。 +sysseek() は前者でのみ意味があり、tell() は後者でのみ意味があります。 =item telldir DIRHANDLE