Kentaro Shirakata
argra****@users*****
2007年 7月 10日 (火) 01:56:16 JST
Index: docs/perl/5.6.1/perlfunc.pod diff -u docs/perl/5.6.1/perlfunc.pod:1.14 docs/perl/5.6.1/perlfunc.pod:1.15 --- docs/perl/5.6.1/perlfunc.pod:1.14 Mon Jul 9 02:39:33 2007 +++ docs/perl/5.6.1/perlfunc.pod Tue Jul 10 01:56:16 2007 @@ -944,6 +944,8 @@ 内部表現と同じですが、C<\n> の外部表現が複数文字になる プラットフォームもあります。 +=begin original + Mac OS and all variants of Unix use a single character to end each line in the external representation of text (even though that single character is not necessarily the same across these platforms). @@ -956,6 +958,20 @@ converted back to C<\cM\cJ> on output. This is what you want for text files, but it can be disastrous for binary files. +=end original + +Mac OS と全ての Unix 系はテキストの外部表現として各行の末尾に 1 つの文字を +使っています(その文字はプラットフォームによって異なる場合もあります)。 +その結果、binmode() はこれらの OS では何の効果もありません。 +VMS, MS-DOS, MS-Windows 系といったその他のシステムでは、 +プログラムからは C<\n> は単純に C<\cJ> に見えますが、 +テキストファイルとして保存される場合は C<\cM\cJ> の 2 文字になります。 +つまり、もしこれらのシステムで binmode() を使わないと、 +ディスク上の C<\cM\cJ> という並びは入力時に C<\n> に変換され、 +プログラムが出力した全ての C<\n> は C<\cM\cJ> に逆変換されます。 +これはテキストファイルの場合は思い通りの結果でしょうが、 +バイナリファイルの場合は悲惨です。 + =begin original Another consequence of using binmode() (on some systems) is that @@ -1491,8 +1507,8 @@ (プログラムが非ゼロで終了しただけの場合は、C<$!>がC<0>にセットされます)。 後でパイプの出力を見たい場合のために、 パイプのクローズでは、パイプ上で実行されている -プロセスの完了を待ちます。また -自動的にコマンドのステータス値を C<$?> に設定します。 +プロセスの完了を待ちます。 +また自動的にコマンドのステータス値を C<$?> に設定します。 =begin original @@ -1569,11 +1585,11 @@ =end original -connect(2) システムコールと同様に、リモートソケット -への接続を試みます。 成功時には真を返し、失敗時には -偽を返します。 NAME は、ソケットに対する、適切な型の -パックされたアドレスでなければなりません。 -L<perlipc/"Sockets: Client/Server Communication">. の例を参照してください。 +connect(2) システムコールと同様に、リモートソケットへの接続を試みます。 +成功時には真を返し、失敗時には偽を返します。 +NAME は、ソケットに対する、適切な型のパックされた +アドレスでなければなりません。 +L<perlipc/"Sockets: Client/Server Communication"> の例を参照してください。 =item continue BLOCK @@ -1644,8 +1660,8 @@ =end original -(ラジアンで示した) EXPR の余弦を返します。 EXPR が -省略されたときには、C<$_> の余弦を取ります。 +(ラジアンで示した) EXPR の余弦を返します。 +EXPR が省略されたときには、C<$_> の余弦を取ります。 =begin original @@ -1794,16 +1810,17 @@ [この関数は、C<tie> 関数に大きくとって代わられました。] dbm(3), ndbm(3), sdbm(3), gdbm(3) ファイルまたは Berkeley DB -ファイルを連想配列に結び付けます。 HASH は、その連想配列の名前です。 +ファイルを連想配列に結び付けます。 +HASH は、その連想配列の名前です。 (普通の C<open> とは違って、最初の引数はファイルハンドル I<ではありません>。まあ、似たようなものですが。) DBNAME は、データベースの名前です (拡張子の .dir や .pag はもしあってもつけません)。 -データベースが存在しなければ、 -MODE MASK (を C<umask> で修正したもの) で指定されたモードで -作られます。 古い DBM 関数のみをサポートしている -システムでは、プログラム中で 1 度だけ dbmopen() を実行することができます。 -昔のバージョンのPerlでは、DBM も ndbm も持っていないシステムでは、 +データベースが存在しなければ、MODE MASK (を C<umask> で修正したもの) で +指定されたモードで作られます。 +古い DBM 関数のみをサポートしているシステムでは、プログラム中で 1 度だけ +dbmopen() を実行することができます。 +昔のバージョンの Perl では、DBM も ndbm も持っていないシステムでは、 dbmopen() を呼び出すと致命的エラーになります。 現在では sdbm(3) にフォールバックします。 @@ -1977,8 +1994,9 @@ =end original -注意: 多くの人々が C<defined> を使いすぎて、C<0> と C<"">(空文字列) が実際のところ -定義された値であることに驚くようです。例えば、以下のように書くと: +注意: 多くの人々が C<defined> を使いすぎて、C<0> と C<"">(空文字列) が +実際のところ定義された値であることに驚くようです。 +例えば、以下のように書くと: "ab" =~ /a(.*)b/; @@ -2000,7 +2018,8 @@ しかしこれは何にもマッチしていないわけではありません-- 何かにはマッチしているのですが、たまたまそれが長さ 0 だっただけです。 これは非常に率直で正直なことです。 -関数が未定義値を返すとき、正直な答えを返すことができないことを告白しています。 +関数が未定義値を返すとき、正直な答えを返すことができないことを +告白しています。 ですので、あなたが自分がしようとしていることの完全性を確認するときにだけ C<defined> を使うべきです。 その他の場合では、単に C<0> または C<""> と比較するというのがあなたの @@ -2294,17 +2313,17 @@ =end original -You can arrange for a callback to be run just before the C<die> -does its deed, by setting the C<$SIG{__DIE__}> hook. The associated -handler will be called with the error text and can change the error -message, if it sees fit, by calling C<die> again. See -L<perlvar/$SIG{expr}> for details on setting C<%SIG> entries, and -L<"eval BLOCK"> for some examples. Although this feature was meant -to be run only right before your program was to exit, this is not -currently the case--the C<$SIG{__DIE__}> hook is currently called -even inside eval()ed blocks/strings! If one wants the hook to do -nothing in such situations, put -(*TBT*) +C<$SIG{__DIE__}> フックをセットすることで、C<die> がその行動を行う +直前に実行されるコールバックを設定できます。 +結び付けられたハンドラはエラーテキストと共に呼び出され、 +必要なら再び C<die> を呼び出すことでエラーテキストを変更できアス。 +C<%SIG> のエントリをセットする詳細については、L<perlvar/$SIG{expr}> を、 +例については L<"eval BLOCK"> を参照してください。 +この機能はプログラムが終了しようとする前に 1 回だけ実行されることを +意味していましたが、現在ではそうではありません -- +C<$SIG{__DIE__}> フックは eval() されたブロック/文字列の中でも +呼ばれるのです! +もしそのような状況で何もしなくない時は: die @_ if $^S; @@ -2510,11 +2529,10 @@ =end original -This function is now largely obsolete, partly because it's very -hard to convert a core file into an executable, and because the -real compiler backends for generating portable bytecode and compilable -C code have superseded it. -(*TBT*) +この関数は大幅に時代遅れのものです; 理由としては、コアファイルを +実行形式に変換するのが非常に困難であること、また移植性のある +バイトコードとコンパイル可能な C コードが生成される +実際のコンパイラバックエンドがこれを置き換えたことがあります。 =begin original