Kentaro Shirakata
argra****@users*****
2007年 7月 6日 (金) 01:58:53 JST
Index: docs/perl/5.6.1/perlfunc.pod diff -u docs/perl/5.6.1/perlfunc.pod:1.10 docs/perl/5.6.1/perlfunc.pod:1.11 --- docs/perl/5.6.1/perlfunc.pod:1.10 Wed Dec 13 12:48:30 2006 +++ docs/perl/5.6.1/perlfunc.pod Fri Jul 6 01:58:53 2007 @@ -1036,18 +1036,20 @@ =end original -Here $subroutine may be C<(eval)> if the frame is not a subroutine -call, but an C<eval>. In such a case additional elements $evaltext and -C<$is_require> are set: C<$is_require> is true if the frame is created by a -C<require> or C<use> statement, $evaltext contains the text of the -C<eval EXPR> statement. In particular, for an C<eval BLOCK> statement, -$filename is C<(eval)>, but $evaltext is undefined. (Note also that -each C<use> statement creates a C<require> frame inside an C<eval EXPR>) -frame. C<$hasargs> is true if a new instance of C<@_> was set up for the -frame. C<$hints> and C<$bitmask> contain pragmatic hints that the caller -was compiled with. The C<$hints> and C<$bitmask> values are subject to -change between versions of Perl, and are not meant for external use. -(*TBT*) +ここでフレームがサブルーチン呼び出しでない場合、C<eval> ではなく +C<(eval)> になります。 +この場合、追加の要素である $evaltext と C<$is_require> がセットされます: +C<$is_require> はフレームが C<require> または C<use> で作られた場合に +真になり、$evaltext は C<eval EXPR> のテキストが入ります。 +特に、C<eval BLOCK> の場合、$filename は C<(eval)> になりますが、 +$evaltext は未定義値になります。 +(それぞれの C<use> は C<eval EXPR> の中で C<require> フレームを作ることに +注意してください。) +C<$hasargs> はこのフレーム用に C<@_> の新しい実体が設定された場合に真となります。 +C<$hints> と C<$bitmask> は caller がコンパイルされたときの +実際的なヒントを含みます。 +C<$hints> は C<$bitmask> は Perl のバージョンによって変更される +可能性があるので、外部での使用を想定していません。 =begin original @@ -1092,8 +1094,9 @@ (可能であれば、) カレントディレクトリを EXPR に移します。 EXPR を指定しないと、C<$ENV{HOME}> が設定されていれば、 -そのディレクトリに移ります。そうでなく、C<$ENV{LOGDIR}>が設定されていれば、 -そのディレクトリに移ります。どちらも設定されていなければ、C<chdir> は何もしません。 +そのディレクトリに移ります。 +そうでなく、C<$ENV{LOGDIR}>が設定されていれば、そのディレクトリに移ります。 +どちらも設定されていなければ、C<chdir> は何もしません。 成功時には真を返し、そうでなければ偽を返します。 C<die> の項の例を参照してください。 @@ -1191,6 +1194,12 @@ If VARIABLE is a hash, it chomps the hash's values, but not its keys. +=end original + +VARIABLE がハッシュなら、ハッシュのキーではなく値について chomp します。 + +=begin original + You can actually chomp anything that's an lvalue, including an assignment: =end original @@ -1343,8 +1352,14 @@ 逆を行うためには、L</ord> を参照してください。 Unicode についてもっと知りたいなら、L<utf8> を参照してください。 +=begin original + If NUMBER is omitted, uses C<$_>. +=end original + +NUMBER が省略された場合、C<$_> を使います。 + =item chroot FILENAME =item chroot @@ -1462,7 +1477,7 @@ =end original -FILEHANDLE は式でもかまいません。この場合、値は相対ファイルハンドルと +FILEHANDLE は式でもかまいません。この場合、値は間接ファイルハンドルと して扱われ、普通は実際のファイルハンドル名です。 =item closedir DIRHANDLE @@ -1632,13 +1647,12 @@ =end original -When verifying an existing encrypted string you should use the encrypted -text as the salt (like C<crypt($plain, $crypted) eq $crypted>). This -allows your code to work with the standard C<crypt> and with more -exotic implementations. When choosing a new salt create a random two -character string whose characters come from the set C<[./0-9A-Za-z]> -(like C<join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>). -(*TBT*) +すでにある暗号化された文字列の検証するには、暗号化されたテキストを +(C<crypt($plain, $crypted) eq $crypted> のようにして)salt として使います。 +これによって標準的な C<crypt> や、より風変わりな実装で動作します。 +新しい salt を選択する場合は、集合 C<[./0-9A-Za-z]> から +(C<join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]> のようにして) +ランダムに2 つの文字を選びます。 =begin original @@ -1760,10 +1774,11 @@ =end original -大きな DBM ファイルを扱うときには、C<keys> や C<values> -のような関数は、巨大なリストを返します。 大きな DBM -ファイルでは、C<each> 関数を使って繰り返しを行なった -方が良いかもしれません。 例: +大きな DBM ファイルを扱うときには、C<keys> や C<values> のような関数は、 +巨大なリストを返します。 +大きな DBM ファイルでは、C<each> 関数を使って繰り返しを行なった方が +良いかもしれません。 +例: # print out history file offsets dbmopen(%HIST,'/usr/lib/news/history',0666); @@ -1791,6 +1806,8 @@ =end original +dbmopen() を呼び出す前にライブラリを読み込むことで、 +どの DBM ライブラリを使うかを制御できます: use DB_File; dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db") @@ -1809,7 +1826,8 @@ =end original 左辺値 EXPR が未定義値 C<undef> 以外の値を持つか否かを示す、ブール値を -返します。EXPR がない場合は、C<$_> がチェックされます。 +返します。 +EXPR がない場合は、C<$_> がチェックされます。 =begin original @@ -1827,9 +1845,13 @@ 多くの演算子が、EOF や未初期化変数、システムエラーといった、 例外的な条件で C<undef> を返すようになっています。 -この関数は、配列の要素の参照のように、 -実際にヌル文字列を返す演算について、未定義のヌルスカラと、 -定義済みのヌルスカラを区別するときに使います。 +この関数は、他の値と C<undef> とを区別するために使えます。 +(単純な真偽値テストでは、C<undef>、0、C<"0"> のいずれも偽を返すので、 +区別することができません。) +C<undef> は有効なスカラ値なので、その存在が I<必ずしも> +例外的な状況を表すとは限らないということに注意してください: +C<pop> は引数が空の配列だったときに C<undef> を返しますが、 +I<あるいは> 返すべき要素がたまたま C<undef> だったのかもしれません。 =begin original @@ -1847,7 +1869,7 @@ 返り値は C<&foo> の前方定義には影響されません。 定義されていないサブルーチンも呼び出し可能であることに注意してください。 最初に呼び出されたときに存在するようにするための -C<AUTOLOAD> メソッドを持ったパッケージかもしれません。 +C<AUTOLOAD> メソッドを持ったパッケージかもしれません-- L<perlsub> を参照して下さい。 =begin original @@ -1859,10 +1881,11 @@ =end original -あらかじめ定義された予約変数に対して用いても、 -直感的に想像できるような値を返すことは保証されていません。 +集合(ハッシュや配列)への C<defined> の使用は非推奨です。 +これはその集合にメモリが割り当てられたかを報告するのに +用いられていました。 この振る舞いは将来のバージョンの Perl では消滅するかもしれません。 -代わりに以下のテストを使うべきです。 +代わりにサイズに対する簡単なテストを使うべきです。 if (@an_array) { print "has array elements\n" } if (%a_hash) { print "has hash members\n" } @@ -1917,8 +1940,9 @@ =end original パターンマッチングが成功し、C<$1> が定義されても、実際には -「なし」にマッチしています。しかしこれは何にもマッチしていないわけでは -ありません--何かにはマッチしているのですが、たまたまそれが長さ 0 だっただけです。 +「なし」にマッチしています。 +しかしこれは何にもマッチしていないわけではありません-- +何かにはマッチしているのですが、たまたまそれが長さ 0 だっただけです。 これは非常に率直で正直なことです。 関数が未定義値を返すとき、正直な答えを返すことができないことを告白しています。 ですので、あなたが自分がしようとしていることの完全性を確認するときにだけ @@ -2037,7 +2061,8 @@ =end original 最終的な操作がハッシュ要素、配列要素、ハッシュスライス、配列スライスの -いずれかである限りは、EXPR には任意の複雑な式を置くことができます: +いずれかである限りは、EXPR には任意の複雑な式を置くことができることに +注意してください: delete $ref->[$x][$y]{$key}; delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys}; @@ -2110,7 +2135,7 @@ ヒント: メッセージの最後を C<", stopped"> のようなもので 終わるようにしておけば、C<"at foo line 123"> のように 追加されて、わかりやすくなります。 -"canasta" というスクリプトを実行しているとすると、 +"canasta" というスクリプトを実行しているとします。 die "/etc/games is no good"; die "/etc/games is no good, stopped"; @@ -2121,7 +2146,7 @@ =end original -は、それぞれ以下のように表示します。 +これは、それぞれ以下のように表示します。 /etc/games is no good at canasta line 123. /etc/games is no good, stopped at canasta line 123. @@ -2195,7 +2220,8 @@ perl は捕らえられなかった例外のメッセージを表示する前に文字列化するので、 このようなカスタム例外オブジェクトの文字列化をオーバーロードしたいと -思うかもしれません。これに関する詳細は L<overload> を参照してください。 +思うかもしれません。 +これに関する詳細は L<overload> を参照してください。 =begin original @@ -2234,7 +2260,7 @@ =end original -をハンドラの最初の行に置いてください(L<perlvar/$^S>参照)。 +をハンドラの最初の行に置いてください(L<perlvar/$^S> を参照してください)。 これは離れたところで不思議な行動を引き起こすので、 この直感的でない振る舞いは将来のリリースで修正されるかもしれません。 @@ -2277,8 +2303,8 @@ =end original -推奨されない形のサブルーチン呼び出しです。L<perlsub>を -参照してください。 +推奨されない形のサブルーチン呼び出しです。 +L<perlsub> を参照してください。 =item do EXPR @@ -2303,7 +2329,7 @@ =end original -は、 +は以下のものと同じようなものですが、 scalar eval `cat stat.pl`; @@ -2319,8 +2345,7 @@ =end original -と同じようなものですが、より効率的で、簡潔であり、 -エラーメッセージでファイル名がわかる、 +より効率的で、簡潔であり、エラーメッセージでファイル名がわかる、 カレントディレクトリでファイルが見つからなかったときに @INC ライブラリを検索する、ファイルがあったときに C<%INC> を更新する、 といったことがあります。 @@ -2342,7 +2367,8 @@ =end original C<do>がファイルを読み込めなかった場合、undef を返して C<$!> に -エラーを設定します。C<do> がファイルを読み込めたがコンパイルできなかった場合、 +エラーを設定します。 +C<do> がファイルを読み込めたがコンパイルできなかった場合、 undef を返して C<$@> にエラーメッセージを設定します。 ファイルのコンパイルに成功した場合、C<do> は最後に評価した表現の値を返します。 @@ -2355,7 +2381,7 @@ =end original ライブラリモジュールのインクルードには、C<use> 演算子や -C<require> 演算子を使った方が良いでしょう。 +C<require> 演算子を使った方がよいことに注意してください。 これらは自動的にエラーをチェックして、問題があれば例外を発生させます。 =begin original @@ -2559,9 +2585,8 @@ =end original -次に FILEHANDLE 上で読み込みを行なったときに、 EOF -が返されるときか、FILEHANDLE がオープンされていないと、 -1 を返します。 +次に FILEHANDLE 上で読み込みを行なったときに、 EOF が返されるときか、 +FILEHANDLE がオープンされていないと、1 を返します。 FILEHANDLE は、値が実際のファイルハンドルを示す式であってもかまいません。 (この関数は、実際に文字を読み、C<ungetc> を行ないますので、 対話型の場合には、それ程有用ではありません。) @@ -2582,8 +2607,8 @@ =end original -引数を省略した C<eof> は、最後に読み込みを行なったファイル -を使います。 空の括弧をつけた C<eof()> は大きく異なります。 +引数を省略した C<eof> は、最後に読み込みを行なったファイルを使います。 +空の括弧をつけた C<eof()> は大きく異なります。 これはコマンドラインのファイルリストで構成され、C<< <> >> 演算子経由で アクセスされる擬似ファイルを示すために用いられます。 通常のファイルハンドルと違って C<< <> >> は明示的にオープンされないので、 @@ -2598,10 +2623,10 @@ =end original -C<< while (<>) >> ループの中では、 -個々のファイルの終わりを調べるには、 -C<eof>かC<eof(ARGV)>を用います。C<eof()>は最後のファイルの終わりのみを -調べます。例: +C<< while (<>) >> ループの中では、個々のファイルの終わりを調べるには、 +C<eof> か C<eof(ARGV)> を用います。 +C<eof()> は最後のファイルの終わりのみを調べます。 +例: # reset line numbering on each input file while (<>) { @@ -2651,16 +2676,17 @@ =end original -第一の形式では、EXPR の返り値が Perl のプログラムであるかのように、解析され、 -実行されます。 -式の値(それ自身スカラコンテキストの中で決定される)はまずパーズされ、エラーがなければ +第一の形式では、EXPR の返り値が Perl のプログラムであるかのように +解析され、実行されます。 +式の値(それ自身スカラコンテキストの中で決定される)はまずパースされ、 +エラーがなければ Perl プログラムのレキシカルコンテキストの中で実行されますので、変数の設定、 サブルーチンやフォーマットの定義は、その後も残っています。 -返される値は eval が実行されるごとにパーズされます。 +返される値は eval が実行されるごとにパースされます。 サブルーチン同様に、最後に評価した式の値か、return 文の値です。 EXPR を省略すると、C<$_> を評価します。 -この形は主に -EXPR のテキストのパーズと実行を実行時にまで遅延させるのに用います。 +この形は主に EXPR のテキストのパースと実行を実行時にまで +遅延させるのに用います。 =begin original @@ -2699,7 +2725,7 @@ =end original どちらの形式でも、返される値はミニプログラムの内部で最後に評価された -表現の値です; サブルーチンと同様、 return ステートメントも使えます。 +表現の値です; サブルーチンと同様、return ステートメントも使えます。 返り値として提供される表現は、eval 自身のコンテキストに依存して 無効・スカラ・リストのいずれかのコンテキストで評価されます。 評価コンテキストの決定方法についての詳細は L</wantarray> を参照してください。 @@ -2734,8 +2760,8 @@ =end original C<eval> は、致命的エラーとなるようなものをトラップすることができますから、 -(C<socket> や C<symlink> といった) -特定の機能が実装されているかを、調べるために使うことができます。 +(C<socket> や C<symlink> といった) 特定の機能が実装されているかを、 +調べるために使うことができることに注意してください。 die 演算子が例外を発生させるものとすれば、 これはまた、Perl の例外捕捉機能と捉えることもできます。 @@ -2751,7 +2777,8 @@ 実行するコードが変わらないのであれば、毎回多量の再コンパイルすることなしに、 実行時エラーのトラップを行なうために、 eval-BLOCK 形式を使うことができます。 -エラーがあれば、やはり $@ に返されます。例: +エラーがあれば、やはり $@ に返されます。 +例: # make divide-by-zero nonfatal eval { $answer = $a / $b; }; warn $@ if $@; @@ -2794,6 +2821,7 @@ } =begin original + Because this promotes action at a distance, this counterintuitive behavior may be fixed in a future release. @@ -2917,7 +2945,8 @@ 引数全体をシステムのコマンドシェル(これはUnix では C</bin/sh -c> ですが、システムによって異なります)に渡して解析させます。 もし、メタキャラクタがなければ、その引数を単語に分け、 -より効率的な C<execvp> に直接渡します。例: +より効率的な C<execvp> に直接渡します。 +例: exec '/bin/echo', 'Your arguments are: ', @ARGV; exec "sort $outfile | uniq"; @@ -3016,8 +3045,7 @@ =end original ハッシュまたは配列要素は、定義されているときにのみ真となり、 -存在しているときにのみ定義されますが、逆は必ずしも真で -はありません。 +存在しているときにのみ定義されますが、逆は必ずしも真ではありません。 =begin original @@ -3086,12 +3114,26 @@ second--glance appear to be an lvalue context may be fixed in a future release. +=begin original + See L<perlref/"Pseudo-hashes: Using an array as a hash"> for specifics on how exists() acts when used on a pseudo-hash. +=end original + +擬似ハッシュに用いた場合に exists() がどのように振舞うかの仕様については +L<perlref/"Pseudo-hashes: Using an array as a hash"> を参照してください。 + +=begin original + Use of a subroutine call, rather than a subroutine name, as an argument to exists() is an error. +=end original + +exists() の引数としてサブルーチン名でなくサブルーチン呼び出しを使うと、 +エラーになります。 + exists ⊂ # OK exists &sub(); # Error @@ -3103,7 +3145,8 @@ =end original -EXPR を評価し、即座にその値を持って終了します。例: +EXPR を評価し、即座にその値を持って終了します。 +例: $ans = <STDIN>; exit 0 if $ans =~ /^[Xx]/; @@ -3119,12 +3162,12 @@ =end original -C<die> も参照してください。 EXPR が省略された場合に -は、ステータスを C<0> として終了します。 +C<die> も参照してください。 +EXPR が省略された場合には、ステータスを C<0> として終了します。 EXPR の値として広く利用可能なのは C<0> が成功で C<1> がエラーということだけです。 その他の値は、 Perl が実行される環境によって異なる解釈がされる 可能性があります。 -例えば、 I<sendmail> 到着メールフィルタから 69 (EX_UNAVAILABLE) で終了すると +例えば、I<sendmail> 到着メールフィルタから 69 (EX_UNAVAILABLE) で終了すると メーラーはアイテムを配達せずに差し戻しますが、 これはいつでも真ではありません。 @@ -3151,8 +3194,8 @@ =end original -exit()関数は常に直ちに終了するわけではありません。まず、 -定義されている END ルーチンを呼び出しますが、 +exit() 関数は常に直ちに終了するわけではありません。 +まず、定義されている END ルーチンを呼び出しますが、 C<END> ルーチン自身は exit を止められません。 同様に、呼び出す必要のあるオブジェクトデストラクタは すべて、実際の終了前に呼び出されます。 @@ -3188,13 +3231,14 @@ =end original -fcntl(2) 関数を実装します。 正しい定数定 -義を得るために、まず、 +fcntl(2) 関数を実装します。 +正しい定数定義を得るために、まず、 use Fcntl; -と書くことが必要でしょう。 引数の処理と返り値につい -ては、下記の C<ioctl> と同様に動作します。例: +と書くことが必要でしょう。 +引数の処理と返り値については、下記の C<ioctl> と同様に動作します。 +例: use Fcntl; fcntl($filehandle, F_GETFL, $packed_return_buffer) @@ -3210,12 +3254,12 @@ =end original -You don't have to check for C<defined> on the return from C<fnctl>. -Like C<ioctl>, it maps a C<0> return from the system call into -C<"0 but true"> in Perl. This string is true in boolean context and C<0> -in numeric context. It is also exempt from the normal B<-w> warnings -on improper numeric conversions. -(*TBT*) +C<fcntl> からの返り値のチェックに C<defined> を使う必要はありません。 +C<ioctl> と違って、C<fnctl> はシステムコールの結果が C<0> だった場合は +C<"0 だが真">を返します。 +この文字列は真偽値コンテキストでは真となり、 +数値コンテキストでは C<0> になります。 +これはまた、不適切な数値変換に関する通常の B<-w> 警告を回避します。 =begin original @@ -3225,8 +3269,8 @@ =end original -fcntl(2)が実装されていないマシンでは、 -C<fcntl>は致命的エラーを引き起こします。 +fcntl(2) が実装されていないマシンでは、C<fcntl>は致命的エラーを +引き起こすことに注意してください。 システムでどの関数が利用可能かについては Fcntl モジュールや fcntl(2) man ページを参照してください。 @@ -3244,8 +3288,9 @@ ファイルハンドルに対するファイル記述子を返します。 ファイルハンドルがオープンしていない場合は未定義値を返します。 -これは主に C<select>や低レベル POSIX tty 操作に対する、ビットマップを -構成するときに便利です。FILEHANDLE が式であれば、 +これは主に C<select> や低レベル POSIX tty 操作に対する、ビットマップを +構成するときに便利です。 +FILEHANDLE が式であれば、 その値が間接ファイルハンドル(普通は名前)として使われます。 =begin original @@ -3422,7 +3467,8 @@ v5.6.0 から、Perl は小プロセスを fork する前に出力用にオープンしている全ての ファイルをフラッシュしようとします。 -しかし、これは対応していないプラットフォームもあります(L<perlport> を参照してください)。 +しかし、これは対応していないプラットフォームもあります +(L<perlport> を参照してください)。 安全のためには、出力が重複するのを避けるためには、 全てのオープンしているハンドルに対して C<$|> (English モジュールでは $AUTOFLUSH) を設定するか、 @@ -3457,8 +3503,8 @@ fork した子プロセスが STDIN や STDOUT といったシステムファイル記述子を 継承する場合、(CGI スクリプトやリモートシェルといった バックグラウンドジョブのような)リモートサーバは考え通りに -動かないでしょう。このような場合では -これらを F</dev/null> として再オープンするべきです。 +動かないであろうことに注意してください。 +このような場合ではこれらを F</dev/null> として再オープンするべきです。 =item format @@ -3469,7 +3515,8 @@ =end original -C<write> 関数で使うピクチャーフォーマットを宣言します。例: +C<write> 関数で使うピクチャーフォーマットを宣言します。 +例: format Something = Test: @<<<<<<<< @||||| @>>>>> @@ -3623,8 +3670,8 @@ =end original -C<getlogin> を認証に使ってはいけません。これは C<getpwuid> のように -安全ではありません。 +C<getlogin> を認証に使ってはいけません。 +これは C<getpwuid> のように安全ではありません。 =item getpeername SOCKET @@ -3657,9 +3704,8 @@ 指定された PID の現在のプロセスグループを返します。 PID に C<0> を与えるとカレントプロセスの指定となります。 -getpgrp(2) を実装していないマシンで実行し -た場合には、例外が発生します。PID を省略する -とカレントプロセスのプロセスグループを返します。 +getpgrp(2) を実装していないマシンで実行した場合には、例外が発生します。 +PID を省略するとカレントプロセスのプロセスグループを返します。 POSIX 版の C<getpgrp> は PID 引数を受け付けないので、 C<PID==0> のみが完全に移植性があります。 @@ -3792,10 +3838,10 @@ =end original -スカラコンテキストでは、*nam、*byname といった NAME -で検索するもの以外は、name を返し、NAME で検索するものは、 -何か別のものを返します。 -(エントリが存在しなければ、未定義値が返ります。)たとえば: +スカラコンテキストでは、*nam、*byname といった NAME で検索するもの以外は、 +name を返し、NAME で検索するものは、何か別のものを返します。 +(エントリが存在しなければ、未定義値が返ります。) +例: $uid = getpwnam($name); $name = getpwuid($num); @@ -3890,7 +3936,8 @@ 名前ベースのインターフェースが標準モジュールで提供されています: C<File::stat>, C<Net::hostent>, C<Net::netent>, C<Net::protoent>, C<Net::servent>, C<Time::gmtime>, C<Time::localtime>, -C<User::grent> です。これらは通常の組み込みを上書きし、 +C<User::grent> です。 +これらは通常の組み込みを上書きし、 それぞれのフィールドに適切な名前をつけたオブジェクトを返します。 例: @@ -3938,8 +3985,8 @@ =end original -要求されたソケットオプションを返します。 -エラーの場合には、undef を返します。 +要求されたソケットオプションを返し、 +エラーの場合には undef を返します。 =item glob EXPR @@ -3971,7 +4018,8 @@ =end original v5.6.0 から、この演算子は標準の C<File::Glob> 拡張を使って -実装されています。詳細は L<File::Glob> を参照して下さい。 +実装されています。 +詳細は L<File::Glob> を参照して下さい。 =item gmtime EXPR @@ -3985,7 +4033,7 @@ time 関数が返す時刻を、グリニッジタイムゾーンで測った時刻として、 8 要素のリストに変換します。 -通常は、以下のようにして使用します。 +通常は、以下のようにして使用します: # 0 1 2 3 4 5 6 7 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = @@ -4055,8 +4103,14 @@ EXPR が省略されると、C<gmtime()> は現在の時刻を使います (C<gmtime(time)>)。 +=begin original + In scalar context, C<gmtime()> returns the ctime(3) value: +=end original + +スカラコンテキストでは、C<gmtime()> は ctime(3) の値を返します: + $now_string = gmtime; # e.g., "Thu Oct 13 04:54:34 1994" =begin original @@ -4069,6 +4123,8 @@ C<Time::Local> で提供されている C<timegm> 関数も参照して下さい。 また、POSIX モジュールで strftime(3) 関数が利用可能です。 +=begin original + This scalar value is B<not> locale dependent (see L<perllocale>), but is instead a Perl builtin. Also see the C<Time::Local> module, and the strftime(3) and mktime(3) functions available via the POSIX module. To @@ -4076,6 +4132,14 @@ locale environment variables appropriately (please see L<perllocale>) and try for example: +=end original + +このスカラ値はロケール依存 B<ではなく> (L<perllocale> を参照してください)、 +Perl 組み込み機能です。 +ロケール依存で似たような日付文字列を得るには、ロケール環境変数を +適切に設定(L<perllocale> を参照してください)した上で、 +以下の例を試してください: + use POSIX qw(strftime); $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime; @@ -4416,10 +4480,18 @@ The special string "C<0> but true" is exempt from B<-w> complaints about improper numeric conversions. +=begin original + Here's an example of setting a filehandle named C<REMOTE> to be non-blocking at the system level. You'll have to negotiate C<$|> on your own, though. +=end original + +これは C<REMOTE> というファイルハンドルをシステムレベルで +非ブロックモードにセットする例です。 +ただし、 C<$|> を自分で管理しなければなりません。 + use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK); $flags = fcntl(REMOTE, F_GETFL, 0) @@ -5683,25 +5755,55 @@ $file =~ s#^(\s)#./$1#; open(FOO, "< $file\0"); +=begin original + (this may not work on some bizarre filesystems). One should conscientiously choose between the I<magic> and 3-arguments form of open(): +=end original + +(これは奇妙なファイルシステムでは動作しないかもしれません)。 +open() の I<magic> と 3 引数形式を誠実に選択するべきです。 + open IN, $ARGV[0]; +=begin original + will allow the user to specify an argument of the form C<"rsh cat file |">, but will not work on a filename which happens to have a trailing space, while +=end original + +とするとユーザーは C<"rsh cat file |"> という形の引数を指定できますが、 +末尾にスペースがついてしまったファイル名では動作しません。一方: + open IN, '<', $ARGV[0]; +=begin original + will have exactly the opposite restrictions. +=end original + +はまったく逆の制限があります。 + +=begin original + If you want a "real" C C<open> (see L<open(2)> on your system), then you should use the C<sysopen> function, which involves no such magic (but may use subtly different filemodes than Perl open(), which is mapped to C fopen()). This is another way to protect your filenames from interpretation. For example: +=end original + +If you want a "real" C C<open> (see L<open(2)> on your system), then you +should use the C<sysopen> function, which involves no such magic (but +may use subtly different filemodes than Perl open(), which is mapped +to C fopen()). This is +another way to protect your filenames from interpretation. For example:(*TBT*) + use IO::Handle; sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL) or die "sysopen $path: $!"; @@ -6056,11 +6158,20 @@ C<a>はデータをそのまま返します。 pack するときは、 C<a> と C<Z> は等価です。 +=begin original + If the value-to-pack is too long, it is truncated. If too long and an explicit count is provided, C<Z> packs only C<$count-1> bytes, followed by a null byte. Thus C<Z> always packs a trailing null byte under all circumstances. +=end original + +pack する値が長すぎる場合、切り詰められます。 +長すぎてかつ明示的に個数が指定されている場合、 +C<Z> は C<$count-1> バイトまで pack し、その後にヌルバイトがつきます。 +従って、C<Z> はどのような状態でも常に末尾にヌルバイトがつきます。 + =item * =begin original @@ -7372,12 +7483,22 @@ undef $/; # for efficiency of <> print scalar reverse <>; # character tac, last line tsrif +=begin original + This operator is also handy for inverting a hash, although there are some caveats. If a value is duplicated in the original hash, only one of those can be represented as a key in the inverted hash. Also, this has to unwind one hash and build a whole new one, which may take some time on a large hash, such as from a DBM file. +=end original + +この演算子はハッシュの逆順にするのにも便利ですが、いくつかの弱点があります。 +元のハッシュで値が重複していると、それらのうち一つだけが +逆順になったハッシュのキーとして表現されます。 +また、これは一つのハッシュをほどいて完全に新しいハッシュを作るので、 +DBM ファイルからのような大きなハッシュでは少し時間がかかります。 + %by_name = reverse %by_address; # Invert the hash =item rewinddir DIRHANDLE @@ -7546,11 +7667,20 @@ C<seek> は使えません -- バッファリングのために動作は予測不能で 移植性のないものになってしまいます。代わりに C<sysseek> を使ってください。 +=begin original + Due to the rules and rigors of ANSI C, on some systems you have to do a seek whenever you switch between reading and writing. Amongst other things, this may have the effect of calling stdio's clearerr(3). A WHENCE of C<1> (C<SEEK_CUR>) is useful for not moving the file position: +=end original + +Due to the rules and rigors of ANSI C, on some systems you have to do a +seek whenever you switch between reading and writing. Amongst other +things, this may have the effect of calling stdio's clearerr(3). +A WHENCE of C<1> (C<SEEK_CUR>) is useful for not moving the file position:(*TBT*) + seek(TEST,0,1); This is also useful for applications emulating C<tail -f>. Once you hit @@ -8041,12 +8171,21 @@ shutdown(SOCKET, 1); # I/we have stopped writing data shutdown(SOCKET, 2); # I/we have stopped using this socket +=begin original + This is useful with sockets when you want to tell the other side you're done writing but not done reading, or vice versa. It's also a more insistent form of close because it also disables the file descriptor in any forked copies in other processes. +=end original + +これは、こちらがソケットを書き終わったが読み終わっていない、 +またはその逆を相手側に伝えたいときに便利です。 +これはその他のプロセスでフォークしたファイル記述子のコピーも +無効にするので、よりしつこい閉じ方です。 + =item sin EXPR =item sin