argra****@users*****
argra****@users*****
2008年 7月 12日 (土) 18:36:46 JST
Index: docs/perl/5.8.8/perl586delta.pod diff -u docs/perl/5.8.8/perl586delta.pod:1.2 docs/perl/5.8.8/perl586delta.pod:1.3 --- docs/perl/5.8.8/perl586delta.pod:1.2 Mon Aug 7 00:58:18 2006 +++ docs/perl/5.8.8/perl586delta.pod Sat Jul 12 18:36:46 2008 @@ -54,11 +54,11 @@ =end original -Win32 では、Perl は IFS 非互換の LSP を使うようになりました。 +Win32 では、Perl は IFS 非互換の LSP も使えるようになりました; Perl を McAfee Guardian のようなファイアウォールと共に 動くようにするためです。 -完全な詳細については F<README.win32> ファイルを参照してください。 -特に Win95 で動作させる場合に重要です。 +完全な詳細については(特に Win95 で実行しているなら) F<README.win32> ファイルを +参照してください。 =head1 Modules and Pragmata Index: docs/perl/5.8.8/perldata.pod diff -u docs/perl/5.8.8/perldata.pod:1.4 docs/perl/5.8.8/perldata.pod:1.5 --- docs/perl/5.8.8/perldata.pod:1.4 Tue Nov 20 04:38:43 2007 +++ docs/perl/5.8.8/perldata.pod Sat Jul 12 18:36:46 2008 @@ -27,16 +27,17 @@ =end original -Perl には、スカラ、スカラの配列、「ハッシュ」とも -呼ばれるスカラの連想配列という 3 つの組み込みデータ型があります。 +Perl には、スカラ、スカラの配列、「ハッシュ」とも呼ばれるスカラの連想配列と +いう 3 つの組み込みデータ型があります。 A scalar is a single string (of any size, limited only by the available memory), number, or a reference to something (which will be discussed in L<perlref>). -通常の配列は 0 を基点とする数値で添え字づけされる -スカラの順序付きリストです。 +通常の配列は 0 を基点とする数値で添え字づけされるスカラの順序付き +リストです。 ハッシュ配列は、文字列のキーのインデックスと、それに結び付けられた スカラ値の順序のない集合です。 +(TBT) =begin original @@ -61,9 +62,8 @@ 名前の最初にあるキャラクターは、その名前がどのような 構造のデータを参照しているのかを区別します。 名前の残りの部分は、参照する値を特定するものです。 -通常、この名前は一つの I<識別子>、つまり、 -文字かアンダースコアから始まってそれに文字、アンダースコア、数字が -続く文字列のことです。 +通常、この名前は一つの I<識別子>、つまり、英字か下線から始まって +それに英字、下線、数字が続く文字列のことです。 一部のケースにおいては C<::>(あるいはやや古風な C<'>) で分けられた 識別子の並びであってもかまいません。 これの最後のもの以外の名前は、最後の部分にある識別子を @@ -71,7 +71,7 @@ (詳細は L<perlmod/Packages> を参照してください)。 リファレンスを生成する式の単純な識別子を、実行に値に置き換えることも 可能です。 -これはこのドキュメントの後の部分と、L<perlref>に詳細な説明があります。 +これはこのドキュメントの後の部分と、L<perlref> に詳細な説明があります。 X<identifier> =begin original @@ -88,7 +88,8 @@ =end original -Perl はこれらの規則に従っていない名前を持っている組み込みの変数も持っています。 +Perl はこれらの規則に従っていない名前を持っている組み込みの変数も +持っています。 これらは変わった名前をもっているので、あなたが使った普通の 変数との間で間違って衝突することがない特殊変数があります。 正規表現の括弧づけされた部分(parenthesized parts)の文字列は C<$> の後に @@ -115,6 +116,7 @@ semantically like the English word "the" in that it indicates a single value is expected. X<scalar> +(TBT) $days # the simple scalar value "days" $days[28] # the 29th element of array @days @@ -134,6 +136,7 @@ which works much like the word "these" or "those" does in English, in that it indicates multiple values are expected. X<array> +(TBT) @days # ($days[0], $days[1],... $days[n]) @days[3,4,5] # same as ($days[3],$days[4],$days[5]) @@ -160,9 +163,8 @@ =end original -さらに、サブルーチンは名前の前に '&' を付けて示しますが、 -英語でもほとんど使われなくなった "do" のように、曖昧にならなければ、 -省略することができます。 +さらに、サブルーチンは名前の前に '&' を付けて示しますが、英語でもほとんど +使われなくなった "do" のように、曖昧にならなければ、省略できます。 シンボルテーブルのエントリは、名前に '*' を付けて示すことができますが、 (気にする気があっても :-)まだ気にする必要はありません。 @@ -219,7 +221,7 @@ 将来に渡る予約語との衝突も避けられます。 大文字と小文字は B<区別されます> から、"FOO"、"Foo"、"foo" は、 すべて違う名前です。 -英字と下線で始まる名前は、名前の一部に数字やアンダースコアを +英字と下線で始まる名前は、名前の一部に数字や下線を 含むことができます。 X<identifier, case sensitivity> X<case> @@ -381,8 +383,8 @@ =end original -ユーザが定義するサブルーチンは、自分が無効、スカラ、 -リストのどのコンテキストで呼ばれたかを意識することができます。 +ユーザが定義するサブルーチンは、自分が無効、スカラ、リストのどの +コンテキストで呼ばれたかを意識することができます。 しかし、多くのサブルーチンでは意識する必要もないでしょう。 スカラ値とリストは自動的にリストに展開されるからです。 関数が呼び出されたコンテキストを動的に識別する方法については、 @@ -436,8 +438,8 @@ Perl はスカラが文字列、数値、リファレンス (オブジェクトを含みます)を 保持することのできる文脈的多態言語 (contextually polymorphic language) です。 -文字列と数値は、ほとんど全ての目的に対して適当であるように -思われますが、リファレンスは組み込みのリファレンスカウントとデストラクタとを +文字列と数値は、ほとんど全ての目的に対して適当であるように思われますが、 +リファレンスは組み込みのリファレンスカウントとデストラクタとを 持っている、キャストすることのできない強く型付けされたポインタです。 =begin original @@ -480,10 +482,9 @@ 未定義の空文字列は、エラーがあったときや、ファイルの終わりに達したとき、 初期化していない変数や配列やハッシュの要素を参照したときなど、 何かに対する実際の値が存在しないことを示します。 -初期のバージョンの Perl では、未定義のスカラは、 -最初に定義済みであるかのように使ったときに定義済みとなり得ますが、 -これはもはや、L<perlref> で説明している自動有効化が起きる稀な場合を -除いて、起こりません。 +初期のバージョンの Perl では、未定義のスカラは、最初に定義済みで +あるかのように使ったときに定義済みとなり得ますが、これはもはや、 +L<perlref> で説明している自動有効化が起きる稀な場合を除いて、起こりません。 値が定義済みであるかどうかを調べるために defined() 演算子を 使うことができ(これは配列やハッシュに対しては無意味です)、 未定義値を生成するために undef() 演算子を使えます。 @@ -550,7 +551,8 @@ 配列の大きさはスカラ値です。 配列 @days の大きさは、csh のように $#days を評価するとわかります。 しかし、これは大きさではありません; -最後の要素に対する添え字になり、通常は 0 番目の要素があるので違う値になります。 +最後の要素に対する添え字になり、通常は 0 番目の要素があるので違う値に +なります。 $#days に代入を行なうと実際の配列の大きさも変化します。 この方法で配列を小さくすると、見えなくなった部分の値は破壊されます。 小さくした配列を再び大きくしても、以前存在した要素に対する前の値が @@ -591,8 +593,7 @@ =end original -配列をスカラコンテキストで評価すると、配列の大きさが -返されます。 +配列をスカラコンテキストで評価すると、配列の大きさが返されます。 (これはリストに対しては成り立たないことに注意してください。 この場合には、C のカンマ演算子と同じように最後の値が返され、 組み込み関数のように値を返すことはしません。) @@ -611,7 +612,7 @@ =end original -Perl version 5 では C<$[> の意味を変更しました: +Perl バージョン 5 では C<$[> の意味を変更しました: C<$[> を設定していないファイルにおいて、他のファイルがこの変数を 変更しているかどうかを心配する必要がなくなりました (言い換えると、C<$[> は使わないほうが良いと言うことです)。 @@ -655,7 +656,7 @@ 割り付けられているエントリの数を、スラッシュで区切った文字列です。 これは、与えたデータに対して、Perl の内部のハッシュのアルゴリズムが、 うまく動作しないかを確認するときくらいにしか使えませんが。 -たとえば、ハッシュに 10,000個 のものを入れ、%HASH をスカラコンテキストで +たとえば、ハッシュに 10,000 個 のものを入れ、%HASH をスカラコンテキストで 評価したときに C<1/16> が得られれば、16 のうち一つのエントリだけが使われ、 おそらくそこに 10,000個 すべてが入っていることを意味します。 これはほとんど起こりそうもないことです。 @@ -668,9 +669,9 @@ =end original -keys()関数に代入をすることによって、ハッシュのためにあらかじめ +keys() 関数に代入をすることによって、ハッシュのためにあらかじめ スペースを割り当てることができます。 -その際に、割り当てる要素の数はその数値以上で最小の2のべき乗に +その際に、割り当てる要素の数はその数値以上で最小の 2 のべき乗に 丸められます: =begin original @@ -739,8 +740,8 @@ ダブルクォートの文字列リテラルでは、バックスラッシュの置換と 変数の置換が行なわれ、シングルクォートの文字列では、 (C<\'> と C<\\>を除いて)これらの置換は行なわれません。 -普通の C 形式でのバックスラッシュの置換規則は、改行やタブを始め、 -ある種の変わった形式のためにも使われます。 +普通の C 形式でのバックスラッシュの置換規則は、改行やタブを始め、ある種の +変わった形式のためにも使われます。 詳しくは L<perlop/"Quote and Quote-like Operators"> を参照してください。 X<string, literal> @@ -755,7 +756,7 @@ 文字列リテラルの中で ('0xff' のように) 16 進、8 進、2 進で 表現されたものは、その値が表すものに自動的に変換されることはありません。 -hex()やoct()といった関数がそのための変換を行います。 +hex() や oct() といった関数がそのための変換を行います。 詳しくは L<perlfunc/hex> と L<perlfunc/oct> を参照してください。 =begin original @@ -865,6 +866,10 @@ =end original +B<Note:> Version Strings (v-strings) have been deprecated. They will +not be available after Perl 5.8. The marginal benefits of v-strings +were greatly outweighed by the potential for Surprise and Confusion. +(TBT) =begin original @@ -879,6 +884,15 @@ =end original +A literal of the form C<v1.20.300.4000> is parsed as a string composed +of characters with the specified ordinals. This form, known as +v-strings, provides an alternative, more readable way to construct +strings, rather than use the somewhat less readable interpolation form +C<"\x{1}\x{14}\x{12c}\x{fa0}">. This is useful for representing +Unicode strings, and for comparing version "numbers" using the string +comparison operators, C<cmp>, C<gt>, C<lt> etc. If there are two or +more dots in the literal, the leading C<v> may be omitted. +(TBT) print v9786; # prints UTF-8 encoded SMILEY, "\x{263a}" print v102.111.111; # prints "foo" @@ -894,6 +908,12 @@ =end original +Such literals are accepted by both C<require> and C<use> for +doing a version check. The C<$^V> special variable also contains the +running Perl interpreter's version in this form. See L<perlvar/$^V>. +Note that using the v-strings for IPv4 addresses is not portable unless +you also use the inet_aton()/inet_ntoa() routines of the Socket package. +(TBT) =begin original @@ -907,6 +927,14 @@ =end original +Note that since Perl 5.8.1 the single-number v-strings (like C<v65>) +are not v-strings before the C<< => >> operator (which is usually used +to separate a hash key from a hash value), instead they are interpreted +as literal strings ('v65'). They were v-strings from Perl 5.6.0 to +Perl 5.8.0, but that caused more confusion and breakage than good. +Multi-number v-strings like C<v65.66> and C<65.66.67> continue to +be v-strings always. +(TBT) =head3 Special Literals X<special literal> X<__END__> X<__DATA__> X<END> X<DATA> @@ -926,7 +954,7 @@ =end original -__FILE__, __LINE__, __PACKAGE__という特殊なリテラルはそれぞれ、 +__FILE__, __LINE__, __PACKAGE__ という特殊なリテラルはそれぞれ、 カレントのファイル名、行番号、パッケージ名を表わします。 これらは独立したトークンとしてのみ用いられます; 文字列中に展開されることはありません。 @@ -1012,7 +1040,8 @@ 予約語とぶつかる危険があります。 そのような単語があった場合、C<use warnings> プラグマや B<-w> スイッチをつけることでPerl がそのような単語を指摘してくれます。 -裸の単語をなくして欲しいという人もいます。以下のようにすると: +裸の単語をなくして欲しいという人もいます。 +以下のようにすると: use strict 'subs'; @@ -1499,8 +1528,8 @@ =end original -ハッシュでは順番に意味がないので、初期化の順序にも意味はないと -いうことに注意してください。 +ハッシュでは順番に意味がないので、初期化の順序にも意味はないということに +注意してください。 出力の順序を変える方法の例は、L<perlfunc/sort> を参照してください。 =head2 Subscripts @@ -1822,9 +1851,8 @@ 型グロブは local() 演算子を使ったローカルなファイルハンドルを 作成するのにも使われます。 -それによって作成されたものは -それを囲むブロックが存在する間だけ存在しますが、 -呼び出し元へ返すことが可能です。 +それによって作成されたものはそれを囲むブロックが存在する間だけ +存在しますが、呼び出し元へ返すことが可能です。 例を挙げましょう: sub newopen {