argra****@users*****
argra****@users*****
2009年 7月 3日 (金) 03:03:46 JST
Index: docs/perl/5.10.0/perlguts.pod diff -u docs/perl/5.10.0/perlguts.pod:1.5 docs/perl/5.10.0/perlguts.pod:1.6 --- docs/perl/5.10.0/perlguts.pod:1.5 Wed Feb 4 00:37:34 2009 +++ docs/perl/5.10.0/perlguts.pod Fri Jul 3 03:03:45 2009 @@ -874,7 +874,7 @@ 関数 C<av_store> は添え字 C<key> の位置に値 C<val> を格納し、C<val> の 参照カウントをインクリメントしません。 従って、呼び出し側はこの振る舞いに注意して対処し、C<av_store> が -NULL を返した場合には、メモリーリークを防ぐために参照カウントの +NULL を返した場合には、メモリリークを防ぐために参照カウントの デクリメントを行う必要があるでしょう。 C<av_fetch> と C<av_store> の両方ともがその戻り値として C<SV*> ではなく、C<SV**> を返すということに注意してください。 @@ -1248,7 +1248,7 @@ 参照カウントのインクリメントをしないということに注意してください。 それは呼び出し側の責任です。 これらの関数が NULL を返した場合、 -呼び出し側はメモリーリークを防ぐために、C<val> の参照カウントの +呼び出し側はメモリリークを防ぐために、C<val> の参照カウントの デクリメントを行う必要が一般にはあるでしょう。 =head2 AVs, HVs and undefined values @@ -1498,10 +1498,9 @@ SVt_RV スカラ SVt_PVAV 配列 SVt_PVHV ハッシュ - SVt_PVCV Code - SVt_PVGV グロブ (possible a file handle) - SVt_PVMG Blessed or Magical Scalar -(TBT) + SVt_PVCV コード + SVt_PVGV グロブ (ファイルハンドルかも) + SVt_PVMG bress されたかマジカルなスカラ =begin original @@ -1509,11 +1508,11 @@ =end original - 詳しくはヘッダーファイル sv.hを参照してください。 + 詳しくはヘッダファイル sv.h を参照してください。 =head2 Blessed References and Class Objects -(Bless されたリファレンスとクラスオブジェクト) +(bless されたリファレンスとクラスオブジェクト) =begin original @@ -1856,7 +1855,7 @@ ここでの正しい手順は、C<newRV_inc> ではなく C<newRV_noinc> を 使うということです。 これによって、最後のリファレンスが破棄されたときに -SV のリファレンスカウントは0となってその SV が破棄されて、メモリー +SV のリファレンスカウントは0となってその SV が破棄されて、メモリ リークを食い止めます。 =begin original @@ -1872,12 +1871,12 @@ =end original -xVsを破棄するのを助けるような便利な関数が幾つかあります。 -これらの関数は “揮発性”(mortality)のコンセプトを導入します。 -ある揮発性のxVはその参照カウントをデクリメントするようにマークしますが、 -実際には“ちょっと後”(a short time later)までデクリメントが +xV を破棄するのを助けるような便利な関数が幾つかあります。 +これらの関数は「揮発性」(mortality) のコンセプトを導入します。 +ある揮発性の xV はその参照カウントをデクリメントするようにマークしますが、 +実際には「ちょっと後」(a short time later)までデクリメントが 行なわれません。 -一般的には、“ちょっと後”とは、XSUB 関数の呼び出しのような +一般的には、「ちょっと後」とは、XSUB 関数の呼び出しのような Perl の一つの文です。 揮発性の xV が持っている参照カウントの デクリメントを行うタイミングの決定は二つのマクロ、SAVETMPS と @@ -1893,7 +1892,7 @@ =end original -“Mortalization”はそれから、C<SvREFCNT_dec> に決定権を委ねます。 +「揮発化」("Mortalization") はそれから、C<SvREFCNT_dec> に決定権を委ねます。 しかし、ある変数を二度揮発的にした場合、その参照カウントは後で 二度デクリメントされます。 @@ -1907,7 +1906,7 @@ =end original -"Mortal" SVs are mainly used for SVs that are placed on perl's stack. +「揮発性」SVs は主に、perl のスタックに置かれる SV に対して使われます。 For example an SV which is created just to pass a number to a called sub is made mortal to have it cleaned up automatically when it's popped off the stack. Similarly, results returned by XSUBs (which are pushed on the @@ -1936,9 +1935,9 @@ =end original -最初のものは(値のない)揮発性の SV を生成し、ふたつめ -は既にある SV を揮発性の SV に変換します(そして、このために -C<SvREFCNT_dec> を呼び出しを遅らせます)。 +最初のものは(値のない)揮発性の SV を生成し、ふたつめは既にある SV を +揮発性の SV に変換します(そして、このために C<SvREFCNT_dec> を呼び出しを +遅らせます)。 三つめは、既に存在する SV の揮発性のコピーを生成します。 C<sv_newmortal> は値のない新しい SV を作るので、普通は C<sv_setpv>, C<sv_setiv> などを使って作らなければなりません: @@ -2008,7 +2007,7 @@ =end original -スタッシュ("stash")とは、パッケージ内で定義された全ての変数が +B<スタッシュ> ("stash")とは、パッケージ内で定義された全ての変数が 入っているハッシュのことです。 ハッシュテーブルにあるそれぞれの key は、(同じ名前のすべての異なる型の オブジェクトで共有される) シンボル名で、ハッシュテーブルの個々の @@ -2036,7 +2035,7 @@ C<main> パッケージにあるアイテムを保持する C<PL_defstash> と呼ばれる スタッシュがあります。 他のパッケージにあるアイテムを取得するため -には、パッケージ名に“::”を付加します。 +には、パッケージ名に「::」を付加します。 C<Foo> というパッケージにあるアイテムは C<Foo::> という PL_defstash の中にあります。 パッケージ C<Bar::Baz> にあるアイテムは C<Bar::> のスタッシュの中の @@ -2064,8 +2063,8 @@ 最初の関数が、リテラル文字列をとり、二番目が SV に入れた文字列を使います。 stash は単なるハッシュなので、C<HV*> を受け取るということを 忘れないでください。 -C<flag> フラグが -GV_ADD にセットされている場合には新たなパッケージを生成します。 +C<flags> フラグが GV_ADD にセットされている場合には新たなパッケージを +生成します。 =begin original @@ -2148,7 +2147,7 @@ =end original スカラ変数は通常、整数、倍精度、ポインタ、リファレンスのうちの -いずれか 一つの型をとります。 +いずれか一つの型をとります。 Perl は実際のデータに対して、蓄積されている型から要求されている型へ、 自動的に変換を行ないます。 @@ -2273,7 +2272,7 @@ =end original -これは、パッチレベル0の時点でのものです。 +これは、パッチレベル 0 の時点でのものです。 変更される可能性があります。 =head2 Assigning Magic @@ -2310,7 +2309,7 @@ =end original -C<sv> がまだ magical でなければ、Perl は C<sv> を C<SVt_PVMG> に変換 +C<sv> がまだマジカルでなければ、Perl は C<sv> を C<SVt_PVMG> に変換 するために C<SvUPGRADE> を使います。 Perl はそれから、マジック機能のリンクリストの先頭にそれを追加します。 以前に存在していた同じタイプのマジックは削除されます。 @@ -2334,8 +2333,7 @@ 使われます。 典型的には変数の名前です。 C<namlen> は C<mg_len> フィールドに格納され、C<name> がヌルなら、 -then either a C<savepvn> copy of -C<name> or C<name> itself is stored in the C<mg_ptr> field, depending on +C<name> の C<savepvn> コピーか、C<name> 自身 is stored in the C<mg_ptr> field, depending on whether C<namlen> is greater than zero or equal to zero respectively. As a special case, if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed to contain an C<SV*> and is stored as-is with its REFCNT incremented. @@ -2511,10 +2509,9 @@ =end original - svt_copy copy tied variable magic to a tied element - svt_dup duplicate a magic structure during thread cloning - svt_local copy magic to local value during 'local' -(TBT) + svt_copy tie された変数のマジックを tie された要素にコピーする + svt_dup スレッドのクローン化中にマジック構造体を複製する + svt_local 'local' 中にマジックをローカル変数にコピーする =begin original @@ -2538,13 +2535,12 @@ =end original -したがって、ある SV が magical であると決定されてその型が +したがって、ある SV がマジカルであると決定されてその型が C<PERL_MAGIC_sv> であったとき、操作が実行されたならば、C<magic_get> が 呼び出されます。 -magical 型に対するルーチンはすべて、C<magic_> で始まります。 -NOTE: the magic routines are not considered part of -the Perl API, and may not be exported by the Perl library. -(TBT) +マジカル型に対するルーチンはすべて、C<magic_> で始まります。 +NOTE: マジックルーチンは Perl API の一部として扱われず、 +Perl ライブラリによってエクスポートされません。 =begin original @@ -2701,11 +2697,11 @@ =end original -magic type C<PERL_MAGIC_ext> と C<PERL_MAGIC_uvar> は -エクステンションから使われ、Perl自身からは使われないように特別に +マジック型 C<PERL_MAGIC_ext> と C<PERL_MAGIC_uvar> は +エクステンションから使われ、Perl 自身からは使われないように特別に 定義されています。 -エクステンションは ~ magic を -プライベート情報を変数(典型的なオブジェクト)に‘アタッチ’(attach) +エクステンションは C<PERL_MAGIC_ext> マジックを、 +プライベート情報を変数(典型的なオブジェクト)に「アタッチ」(attach) するために使うことができます。 これは、通常の perl コードが(ハッシュオブジェクトの要素を使うのとは違って) そのプライベート情報を壊す恐れがないのでとても便利です。 @@ -2763,7 +2759,8 @@ =end original -C<PERL_MAGIC_uvar> を配列に添付するのは可能ですが、何の意味もありません。 +C<PERL_MAGIC_uvar> を配列にアタッチすることは可能ですが、何の意味も +ありません。 =begin original @@ -2799,15 +2796,14 @@ =end original -複数のエクステンションが -C<PERL_MAGIC_ext> や C<PERL_MAGIC_uvar> magic を使う可能性があるので -エクステンションがそれを扱うには気をつけることが重要であることに -注意してください。 +複数のエクステンションが C<PERL_MAGIC_ext> や C<PERL_MAGIC_uvar> マジックを +使う可能性があるので、エクステンションがそれを扱うには気をつけることが +重要であることに注意してください。 典型的には、これはオブジェクトをエクステンションが扱えるように同じクラスに bless するときにのみ使います。 -C<PERL_MAGIC_ext> magic では、 -これはまた、プライベートなデータ領域の先頭においてそれをチェックするために -I32 ‘シグネチャー’(signature)を付加するのに適切なものです。 +C<PERL_MAGIC_ext> マジックでは、これはまた、プライベートなデータ領域の +先頭においてそれをチェックするために I32「シグネチャ」(signature) を +付加するのに適切なものです。 =begin original @@ -2825,23 +2821,21 @@ =end original -C<sv_set*()> と C<sv_cat*()> といった関数群は -そのターゲットに対して magic を'セットしない'ということにも -注意してください。 -magic をセットするには、ユーザーが -C<svSETMAGIC> マクロを呼び出した後でこれらの関数を呼び出すか、 -あるいは C<sv_set*_mg()> か +C<sv_set*()> と C<sv_cat*()> といった関数群はそのターゲットに対して +'set' マジックを B<起動しない> ということにも注意してください。 +これには、ユーザーが C<svSETMAGIC> マクロを呼び出した後でこれらの関数を +呼び出すか、あるいは C<sv_set*_mg()> か C<sv_cat*_mg()> の何れかの関数を使わなければなりません。 -同様に generic な C コードは、それが -magic を扱っていないような関数から得られた -SV を使っているのであれば、magic を'get'するために C<SvGETMAGIC> を -呼び出してやらなければなりません。 -これらの関数についてはL<perlapi>を参照してください。 -例を挙げると、C<sv_cat*()> 関数群の -呼び出しは通常 C<SvSETMAGIC()> が続いている必要がありますが、 -C<SvGETMAGIC> が先行している必要はありません。 -なぜなら、 -その実装において magic を 'get' するようになっているからです。 +同様に、一般的な C コードは、 +それがマジックを扱っていないような関数から得られた +SV を使っているのであれば、 +'get' マジックを起動するために +C<SvGETMAGIC> を呼び出さなければなりません。 +これらの関数については L<perlapi> を参照してください。 +例えば、C<sv_cat*()> 関数群の +呼び出しは通常引き続いて C<SvSETMAGIC()> を呼び出す必要がありますが、 +C<SvGETMAGIC> が先行している必要はありません; +なぜなら、その実装は 'get' マジックを扱うからです。 =head2 Finding Magic @@ -2859,8 +2853,8 @@ このルーチンは SV に格納されている C<MAGIC> 構造体へのポインタを 返します。 -SV が magical feature を持っていなければ、C<NULL> が返され、 -SV が Svt_PVMG の型でなければPerlはコアダンプするかもしれません。 +SV がマジカル機能を持っていなければ、C<NULL> が返されます。 +また、SV が Svt_PVMG の型でなければ Perl はコアダンプするかもしれません。 int mg_copy(SV* sv, SV* nsv, const char* key, STRLEN klen); @@ -2872,13 +2866,13 @@ =end original -このルーチンは C<sv >が持っている magic の型を検査します。 -その mg_type フィールドが大文字であれば、mg_obj が C<nsv> にコピーされますが、 +このルーチンは C<sv> が持っているマジックの型を検査します。 +mg_type フィールドが大文字であれば、mg_obj が C<nsv> にコピーされますが、 mg_type フィールドは小文字に変更されます。 =head2 Understanding the Magic of Tied Hashes and Arrays -(tie されたハッシュと配列の magic を理解する) +(tie されたハッシュと配列のマジックを理解する) =begin original @@ -2887,8 +2881,7 @@ =end original -tie されたハッシュと配列は magic type -C<PERL_MAGIC_tied> の magical beast です。 +tie されたハッシュと配列は C<PERL_MAGIC_tied> マジック型の magical beast です。 =begin original @@ -2924,8 +2917,8 @@ =end original -perlのtie関数は、ある変数と GET、SET 等といった様々なメソッドを実装している -オブジェクトとを結び付けるものです。 +perl の tie 関数は、ある変数と GET、SET 等といった様々なメソッドを +実装しているオブジェクトとを結び付けるものです。 XSUB から perl の tie 関数と等価な働きをさせるには、 ちょっとしたオマジナイをしなければなりません。 以下の例が必要なステップです。 @@ -2969,14 +2962,14 @@ =end original tie された配列を引数に与えられたときの C<av_store> 関数は、単に配列の -magic を C<mg_copy> を使って“stored”されるように値をコピーするだけです。 +magic を C<mg_copy> を使って「保管」されるように値をコピーするだけです。 この関数は、その値が実際には配列に格納する必要のないものであることを 示す NULL を返す可能性があります。 [MAYCHANGE] tie された配列に対して C<av_store> を呼び出した後、呼び出し側は TIEARRAY -オブジェクトに対して Perl レベルの“STORE”メソッドを起動するために +オブジェクトに対して Perl レベルの "STORE" メソッドを起動するために C<av_store> を呼び出すことが通常は必要となります。 -C<av_store> が NULL を返したならば、メモリーリークを防ぐために +C<av_store> が NULL を返したならば、メモリリークを防ぐために C<SvREFCNT_dec(val)> を呼び出すことが必要となります。 [/MAYCHANGE] @@ -3005,13 +2998,13 @@ =end original C<av_fetch> と、対応するハッシュ関数 C<hv_fetch> および C<hv_fetch_ent> は -C<mg_copy> を使って初期化が行なわれている未定義の揮発値を返します。 -返された値は、すでに揮発的であるかのように解放する必要のないものです。 +実際には C<mg_copy> を使って初期化が行なわれている未定義の揮発値を返します。 +返された値はすでに揮発性なので、解放する必要がないことに注意してください。 [MAYCHANGE] しかし、TIE オブジェクトに対応した perl レベルの "FETCH" メソッドを実行するには、返されたその値に対して C<mg_get()> を呼び出す必要があるでしょう。 -同様に、TIE オブジェクトに対する“STORE”メソッドの起動である +同様に、TIE オブジェクトに対する "STORE" メソッドの起動である C<sv_setsv> を使って適切な値を代入した後で、返された値に対して C<mg_set()> を呼び出すことができます。 [/MAYCHANGE] @@ -3031,11 +3024,10 @@ [MAYCHANGE] 言い換えれば、配列やハッシュをフェッチしたりストアする関数は、 -tieされている配列やハッシュに対する場合には実際に値をフェッチしたり -ストアしたりするわけではないということです。 -それらの関数は -“ストア”されたり“フェッチ”された値に対して magic を付加するために、 -単に C<mg_copy> を呼び出すだけです。 +tie されている配列やハッシュに対する場合には実際に値をフェッチしたり +保管したりするわけではないということです。 +それらの関数は「保管」されたり「フェッチ」された値に対してマジックを +付加するために、単に C<mg_copy> を呼び出すだけです。 =begin original @@ -3048,10 +3040,10 @@ =end original -現在(バージョン 5.004)、ハッシュや配列に対するアクセス関数の使用する -際には、ユーザーが“通常の”ハッシュや配列なのか、あるいはそれが +現在(バージョン 5.004)、ハッシュや配列に対するアクセス関数を使用する +際には、ユーザーが「通常の」ハッシュや配列なのか、あるいはそれが tie されたものであるのかを気をつけることが要求されています。 -将来のバージョンでは、このAPIはtieされたデータに対するアクセスと +将来のバージョンでは、この API は tie されたデータに対するアクセスと 通常のデータに対するアクセスをより透過的にするために変更されるかも しれません。 [/MAYCHANGE] @@ -3071,8 +3063,8 @@ TIEARRAY や TIEHASH といったインターフェースが、統一的な ハッシュ/配列構文を使うための perl メソッドを起動をするための単なる -“砂糖”であることを良く理解したことでしょう。 -これらの“砂糖”の使用は幾らかのオーバーヘッド(通常、FETCH/STORE 操作 +砂糖であることを良く理解したことでしょう。 +これらの砂糖の使用はいくらかのオーバーヘッド(通常、FETCH/STORE 操作 当たり二つから四つの余分なオペコード、それに加えてメソッドを 起動するために必要なすべての揮発性変数の生成)を招きます。 このオーバーヘッドは TIE メソッド自身がしっかりしたものであれば、ほぼ @@ -3081,7 +3073,7 @@ =head2 Localizing changes -(変更を局所化する) +(変更をローカル化する) =begin original @@ -3102,7 +3094,7 @@ =end original -この構造は以下のものと B<ほぼ> 同じです +この構造は以下のものと I<ほぼ> 同じです { my $oldvar = $var; @@ -3145,17 +3137,15 @@ Perl API を通して C から同様の処理を行う方法もあります。 I<擬似ブロック>(pseudo-block)を生成し、そのブロックの最後で自動的に 復帰するような幾つかの変更を行います。 -ブロックから抜けるのは -陽に抜けるための指示があっても良いし、非局所的な脱出 -(die() を使ったもの)でもかまいません。 +ブロックから抜けるのは、明示的に抜けるための指示があっても良いし、 +非局所的な脱出(die() を使ったもの)でもかまいません。 ブロックに似たこの構造は C<ENTER>/C<LEAVE> マクロのペアによって -生成されます(L<perlcall/"Returning a Scalar"> を -参照してください)。 -このような構造ではなにか重要な局所化された +生成されます(L<perlcall/"Returning a Scalar"> を参照してください)。 +このような構造ではなにか重要なローカル化された タスクのための特別なものを作成したり、あるいは 既に存在しているもの(Perl のサブルーチン/ブロックに束縛されたものとか、 あるいは解放する一時変数のペア)を使うことも可能です -(二番目のケースでは、局所化するためのオーバーヘッドはほとんど +(二番目のケースでは、ローカル化するためのオーバーヘッドはほとんど 無視できるものです)。 すべての XSUB は自動的に C<ENTER>/C<LEAVE> の ペアによって囲まれているということに注意してください。 @@ -3185,7 +3175,7 @@ =end original -これらのマクロはそれを囲む B<擬似ブロック> において +これらのマクロはそれを囲む I<擬似ブロック> において 整数変数 C<i> の値をリストアするようにします。 =item C<SAVESPTR(s)> @@ -3219,11 +3209,9 @@ =end original -B<擬似ブロック> の終端において C<sv> の参照カウントは +I<擬似ブロック> の終端において C<sv> の参照カウントは デクリメントされます。 -これは -in that it is also a -mechanism for doing a delayed C<SvREFCNT_dec> +これは、遅延した C<SvREFCNT_dec> を行うための機構という意味で C<sv_2motral> に似たものです。 However, while C<sv_2mortal> extends the lifetime of C<sv> until the beginning of the next statement, @@ -3264,7 +3252,7 @@ =end original -C<OP *> は B<擬似ブロック> の終端において op_free() されます。 +C<OP *> は I<擬似ブロック> の終端において op_free() されます。 =item C<SAVEFREEPV(p)> @@ -3275,7 +3263,7 @@ =end original -C<p> によって指し示されているメモリーの塊は B<擬似ブロック> の終端で +C<p> によって指し示されているメモリの塊は I<擬似ブロック> の終端で Safefree() されます。 =item C<SAVECLEARSV(SV *sv)> @@ -3302,7 +3290,7 @@ =end original -B<擬似ブロック> の終端で C<hv> にあるキー C<key> は削除されます。 +I<擬似ブロック> の終端で C<hv> にあるキー C<key> は削除されます。 C<key> によって指し示されている文字列は Safefree() されます。 short-lived storageにある I<key> を持っているものがあった場合には 以下のようにして対応する文字列が再割り当てされます。 @@ -3318,7 +3306,7 @@ =end original -B<擬似ブロック> の終端において関数 C<f> が呼び出されます。 +I<擬似ブロック> の終端において関数 C<f> が呼び出されます。 この関数 C<f> は C<p> のみを引数に取ります。 =item C<SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)> @@ -3330,9 +3318,8 @@ =end original -At the end of I<pseudo-block> the function C<f> is called with the -implicit context argument (if any), and C<p>. -(TBT) +I<疑似ブロック> の最後に、関数 C<f> が(もしあれば)暗黙のコンテキスト +引数と C<p> で呼び出されます。 =item C<SAVESTACK_POS()> @@ -3343,7 +3330,7 @@ =end original -B<擬似ブロック> の終端においてPerlの内部スタック(C<SP>)のカレント +I<擬似ブロック> の終端において Perl の内部スタック(C<SP>)のカレント オフセットがリストアされます。 =back @@ -3400,9 +3387,8 @@ C<SV> のカレントの値を複製し、カレントの C<ENTER>/C<LEAVE> B<擬似ブロック> を抜けるときに C<SV> の保存した値を復帰します。 -It doesn't handle magic. Use C<save_scalar> if -magic is affected. -(TBT) +マジックを扱いません。 +マジックを有効にしたい場合は C<save_scalar> を使ってください。 =item C<void save_list(SV **sarg, I32 maxsarg)> @@ -3436,7 +3422,7 @@ =end original -C<save_svref> に似ていますが、C<AV *> と C<HV *> の局所化を行います。 +C<save_svref> に似ていますが、C<AV *> と C<HV *> のローカル化を行います。 =back @@ -3448,9 +3434,9 @@ =end original -C<Alias> モジュールは B<呼び出し側のスコープ> 中での基本型の局所化を +C<Alias> モジュールは B<呼び出し側のスコープ> 中での基本型のローカル化を 実装します。 -スコープを持った何かの局所化に興味のある人は +スコープを持った何かのローカル化に興味のある人は そこに何があるかも見ておいた方が良いでしょう。 =head1 Subroutines @@ -3483,10 +3469,9 @@ スタック引数は C<ST(n)> というマクロを使ってアクセスできます。 これは、C<n> 番目のスタック引数を返すものです。 -引数 0 は、Perl の -サブルーチン呼び出しで渡された最初の引数です。 -これらの引数は -C<SV*> で、C<SV*> が使われるところであればどこでも使うことができます。 +引数 0 は、Perl のサブルーチン呼び出しで渡された最初の引数です。 +これらの引数は C<SV*> で、C<SV*> が使われるところであればどこでも +使うことができます。 =begin original @@ -3498,8 +3483,8 @@ =end original -ほとんどの場合には、C ルーチンからの出力は RETVAL ディレクティブ -とOUTPUT ディレクティブを使って扱うことができます。 +ほとんどの場合には、C ルーチンからの出力は RETVAL 指示子と +OUTPUT 指示子を使って扱うことができます。 しかし、引数スタックのスペースがすべての返却値を扱うのに十分で なくなる場合があります。 例としては、引数をとらないでローカルなタイムゾーンと夏時間の省略形の @@ -3513,6 +3498,7 @@ =end original このような状況を扱うためには、PPCODE ディレクティブを使い、さらに +スタックを以下のマクロを使って拡張します: EXTEND(SP, num); @@ -3523,7 +3509,6 @@ =end original -というマクロを使ってスタックを拡張します。 ここで C<SP> はスタックポインタで、C<num> はスタックを拡張すべき 要素の数です。 @@ -3535,8 +3520,8 @@ =end original -スタック上に場所を確保したら、C<PUSHs> マクロを使って -値をスタックへプッシュします。 +スタック上に場所を確保したら、C<PUSHs> マクロを使って値をスタックへ +プッシュします。 The pushed values will often need to be "mortal" (See L</Reference Counts and Mortality>): (TBT) @@ -3662,8 +3647,8 @@ =end original These routines used to be called C<perl_call_sv>, etc., before Perl v5.6.0, -but those names are now deprecated; macros of the same name are provided for -compatibility. +しかしこれらの名前は現在では非推奨です; 同じ名前のマクロが互換性のために +提供されています。 (TBT) =begin original @@ -3702,8 +3687,12 @@ =head2 Memory Allocation +(メモリ割り当て) + =head3 Allocation +(割り当て) + =begin original All memory meant to be used with the Perl API functions should be manipulated @@ -3713,7 +3702,7 @@ =end original -Perl API 関数と共に使うような全てのメモリーはこのセクションで +Perl API 関数と共に使うような全てのメモリはこのセクションで 説明されているマクロを使って扱うべきです。 マクロは実際の malloc の 実装と、perl で使われているものとの差を透過的にします。 @@ -3729,7 +3718,7 @@ Perl と一緒に配布されていて、あなたがこれを使うことを推奨されている malloc の変種です。 -これは様々な大きさの未割り付けのメモリーをプールしておき、 +これは様々な大きさの未割り付けのメモリをプールしておき、 より早く割り付け要求に応えようとするものです。 しかしながら一部のプラットフォームでは、これは不法なmallocエラーや freeエラーを引き起こす可能性があります。 @@ -3740,7 +3729,7 @@ =end original -これら三つのマクロはメモリーの割り付けのために使われます: +これら三つのマクロはメモリの割り付けのために使われます: Newx(pointer, number, type); Newxc(pointer, number, type, cast); @@ -3753,7 +3742,7 @@ =end original -1 番目の引数 C<pointer> は、新たにメモリーを割り付けられる変数の +1 番目の引数 C<pointer> は、新たにメモリを割り付けられる変数の 名前にします。 =begin original @@ -3779,7 +3768,7 @@ =end original -C<Newx> や C<Newxc> とは異なり、C<Newxz> は割り付けたメモリーのすべてを +C<Newx> や C<Newxc> とは異なり、C<Newxz> は割り付けたメモリのすべてを ゼロで埋めるために C<memzero> を呼び出します。 =head3 Reallocation @@ -3797,8 +3786,8 @@ =end original -上記の三つのマクロは、メモリーのバッファーサイズを変更したりもう -使わなくなったメモリー領域を解放するために使われます。 +上記の三つのマクロは、メモリのバッファーサイズを変更したりもう +使わなくなったメモリ領域を解放するために使われます。 C<Renew> と C<Renewc> の引数は、“魔法のクッキー”引数が必要ないということを 除きそれぞれ C<New> と C<Renewc> に一致します。 @@ -3819,12 +3808,11 @@ =end original -この三つのマクロは、それぞれ割り付けたメモリー領域に対する移動、 +この三つのマクロは、それぞれ割り付けたメモリ領域に対する移動、 複写、ゼロで埋めるといったことに使われます。 C<source> と C<dest> という引数は、転送元と転送先の開始番地への ポインタです。 -Perl は、 -構造体 C<type> の大きさ (C<sizeof> 関数を使います)のインスタンスの +Perl は、構造体 C<type> の大きさ (C<sizeof> 関数を使います)のインスタンスの C<number> 個分だけ、移動、複写、ゼロ埋めを行います。 =head2 PerlIO @@ -3841,7 +3829,7 @@ =end original -最新リリースの Perl の開発では、Perl の“通常の”標準入出力ライブラリに +最新リリースの Perl の開発では、Perl の「通常の」標準入出力ライブラリに 依存している部分を取り除くことと、Perl で別の標準入出力の実装が 使えるようにすることが試みられました。 これにより必然的に、Perl と共にコンパイルされた標準入出力の実装を @@ -3900,7 +3888,7 @@ =end original -このtargetをスタックに置くためのマクロが C<PUSHTARG> です。 +この target をスタックに置くためのマクロが C<PUSHTARG> です。 このマクロは、他の多くのマクロが C<(X)PUSH[iunp]> を通じて間接的に 使っているのと同様に、幾つかのオペコードで直接使われています。 @@ -4057,10 +4045,9 @@ =end original -コンパイルされたユニットがスクラッチパッド AVへのポインタを +コンパイルされたユニットがスクラッチパッド AV へのポインタを 保持しているということは、100% 本当のことではありません。 -実際は、 -(初期値では)一要素の AV へのポインタを保持していて、この要素が +実際は、(初期値では)一要素の AV へのポインタを保持していて、この要素が スクラッチパッド AV なのです。 なぜ、こういう余計な間接レベルを必要としているのでしょう? @@ -4078,8 +4065,8 @@ その答えは B<再帰> と、おそらく B<スレッド> です。 これら二つは同じサブルーチンに対する別々の実行ポインタを 生成しようとするかもしれません。 -子サブルーチンが(呼び出す子サブルーチンを -覆っている寿命を持つ)親サブルーチンの一時変数を上書きしてしまわないように、 +子サブルーチンが(呼び出す子サブルーチンを覆っている寿命を持つ) +親サブルーチンの一時変数を上書きしてしまわないように、 親と子では、異なるスクラッチパッドを持つようにすべきです (B<かつ>、レキシカルは分けておくべきなのです!)。 @@ -4095,8 +4082,7 @@ 各サブルーチンは、スクラッチパッドの(長さが 1 の)配列を伴って生成されます。 サブルーチンに対する各エントリーはその時点での再帰の深さが この配列の長さよりも大きくないことをチェックします。 -そして、 -もしそうであれば、新たなスクラッチパッドが生成されて配列へと +そして、もしそうであれば、新たなスクラッチパッドが生成されて配列へと プッシュされます。 =begin original @@ -4156,7 +4142,7 @@ この木構造は、Perl があなたのプログラムを解析したやり方を 反映していますが、実行の順序については反映していません。 ノードの実行順序を表わす木構造のノードを辿ろうとする別の -"スレッド"(thread)があります。 +「スレッド」(thread) があります。 先の簡単な例では、次のようになります。 $b ---> $c ---> + ---> $a ---> assign-to @@ -4189,7 +4175,7 @@ =end original -perlをデバッグ用にコンパイルした(通常は C<Configure> のコマンドラインで +perl をデバッグ用にコンパイルした(通常は C<Configure> のコマンドラインで C<-DDEBUGGING> を使って行います)場合、Perl のコマンドラインで C<-Dx> を指定することによって解析木を検査することができます。 その出力はノード毎に数行を取り、C<$b+$c> は以下のようになります。 @@ -4229,7 +4215,7 @@ この木には五つのノード(C<TYPE> 毎にひとつ)があって、そのうちの 三つだけが最適化されないものです(左側に数字のあるもの)。 -与えられたノードのすぐ下にある子供は同じレベルのインデントにあるC<{}>の +与えられたノードのすぐ下にある子供は同じレベルのインデントにある C<{}> の ペアに対応します。 したがって、このリストは以下の木に対応します。 @@ -4249,8 +4235,7 @@ 実行順序は C<===E<gt>> マークによって表わされますから、C<3 4 5 6> (ノード C<6>は、上にあるリストには含まれません)となります。 -つまり、 -C<gvsv gvsv add whatever> ということになります。 +つまり、C<gvsv gvsv add whatever> ということになります。 =begin original @@ -4338,8 +4323,8 @@ =end original -この木構造は、I<yacc> が perl プログラムを読み込んでその構造を解析して -いる間にコンパイラによって生成されます。 +この木構造は、I<yacc> が perl プログラムを読み込んでその構造を解析している +間にコンパイラによって生成されます。 yacc はボトムアップで動作するので、perl によるコンパイルの最初のパスで 行なわれます。 @@ -4372,10 +4357,9 @@ チェックルーチンは、ノードが実行順序スレッドを除いて完全に 構築されたときに呼び出されます。 -この時点では、構築されたノードに対する -back-line が存在しないので、トップレベルノードに対して、新たなノードを -生成したりノードを解放したりすることを含めて、ほとんどの操作を -行うことができます。 +この時点では、構築されたノードに対する back-line が存在しないので、 +トップレベルノードに対して、新たなノードを生成したりノードを +解放したりすることを含めて、ほとんどの操作を行うことができます。 =begin original @@ -4397,7 +4381,7 @@ =end original 規約により、チェックルーチンは C<ck_*> のような名前を持ちます。 -これらは通常サブルーチン C<new*OP> (もしくは C<convert>)から +これらは通常サブルーチン C<new*OP> (もしくは C<convert>) から 呼び出されます(これらのサブルーチンは F<perly.y> から呼び出されます)。 =head2 Compile pass 1a: constant folding @@ -4417,8 +4401,8 @@ チェックルーチンが呼び出された直後に、返されたノードはコンパイル時 実行のためのチェックが行なわれます。 もしそうであれば(値が定数であると判定された)、そのノードは即座に -実行されて、“戻り値”に -対応する部分木は B<定数> ノードで置換され、部分木が削除されます。 +実行されて、「戻り値」に対応する部分木は B<定数> ノードで置換され、 +部分木が削除されます。 =begin original @@ -4447,8 +4431,7 @@ 解析木の一部分のコンテキストがわかっているとき、それは木の末端へ 伝播します。 このとき、コンテキストは(実行時コンテキストの二種類ではなく) -無効、真偽値、スカラ、リスト、左辺値の五種類の値を -持つことができます。 +無効、真偽値、スカラ、リスト、左辺値の五種類の値を持つことができます。 パス 1 とは対照的に、このパスではトップから末端へと処理が進みます。 あるノードのコンテキストは、その下にある部分のコンテキストを決定します。 @@ -4466,12 +4449,12 @@ この動作では解析木が(“スレッド”ポインタを通じて)後方参照を 含んでいるので、ノードをこの時に free() することはできません。 このステージでノードを最適化するのを許すために、対象となるノードは -free() されるかわりに null() されます(つまり、そのノードの型が OP_NULL に -変えられるということ)。 +free() されるかわりに null() されます(つまり、そのノードの型が +OP_NULL に変えられるということ)。 =head2 Compile pass 3: peephole optimization -(コンパイルパス3: 覗き穴最適化) +(コンパイルパス 3: 覗き穴最適化) =begin original @@ -4487,7 +4470,7 @@ サブルーチン(もしくは C<eval> かファイル)に対する解析木が生成された後で、 そのコードに対する追加パスが実行されます。 このパスはトップダウンでもボトムアップでもなく、(条件に対する -compillcation を伴った)実行順序です。 +複雑さを伴った)実行順序です。 これらの最適化はサブルーチン peep() で行なわれます。 このステージで行なわれる最適化はパス 2 でのものと同じ制限に従います。 Index: docs/perl/5.10.0/perlopentut.pod diff -u docs/perl/5.10.0/perlopentut.pod:1.1 docs/perl/5.10.0/perlopentut.pod:1.2 --- docs/perl/5.10.0/perlopentut.pod:1.1 Thu Jul 2 02:18:54 2009 +++ docs/perl/5.10.0/perlopentut.pod Fri Jul 3 03:03:45 2009 @@ -40,10 +40,9 @@ =end original -Perl's C<open> function was designed to mimic the way command-line -redirection in the shell works. Here are some basic examples -from the shell: -(TBT) +Perl の C<open> 関数は、シェルでのコマンドラインのリダイレクトをまねて +設計されています。 +以下はシェルでの基本的な例です: $ myprogram file1 file2 file3 $ myprogram < inputfile @@ -58,8 +57,7 @@ =end original -And here are some more advanced examples: -(TBT) +そして以下はもう少し高度な例です: $ otherprogram | myprogram f1 - f2 $ otherprogram 2>&1 | myprogram - @@ -74,7 +72,8 @@ =end original -Programmers accustomed to constructs like those above can take comfort +上述のような方法に慣れているプログラマは、 +can take comfort in learning that Perl directly supports these familiar constructs using virtually the same syntax as the shell. (TBT) @@ -94,13 +93,12 @@ =end original -The C<open> function takes two arguments: the first is a filehandle, -and the second is a single string comprising both what to open and how -to open it. C<open> returns true when it works, and when it fails, -returns a false value and sets the special variable C<$!> to reflect -the system error. If the filehandle was previously opened, it will -be implicitly closed first. -(TBT) +C<open> 関数は 2 つの引数を取ります: 1 つめはファイルハンドルで、 +2 つめは何を開くかとどう開くかで構成される単一の文字列です。 +C<open> は成功すると真を返し、失敗すると偽を返して特殊変数 C<$!> に +システムエラーを反映します。 +指定されたファイルハンドルが以前に開かれていた場合は、暗黙の内に +まず閉じられます。 =begin original @@ -108,8 +106,7 @@ =end original -For example: -(TBT) +例えば: open(INFO, "datafile") || die("can't open datafile: $!"); open(INFO, "< datafile") || die("can't open datafile: $!"); @@ -122,8 +119,7 @@ =end original -If you prefer the low-punctuation version, you could write that this way: -(TBT) +句読点が少ない方が好みなら、以下のようにも書けます: open INFO, "< datafile" or die "can't open datafile: $!"; open RESULTS,"> runstats" or die "can't open runstats: $!"; @@ -136,9 +132,9 @@ =end original -A few things to notice. First, the leading less-than is optional. -If omitted, Perl assumes that you want to open the file for reading. -(TBT) +いくつか気がつくことがあります。 +まず、先頭の「大なり」は省略可能です。 +省略されると、Perl はファイルを読み込みのために開きたいと仮定します。 =begin original @@ -149,9 +145,8 @@ =end original Note also that the first example uses the C<||> logical operator, and the -second uses C<or>, which has lower precedence. Using C<||> in the latter -examples would effectively mean -(TBT) +second uses C<or>, which has lower precedence. +後者の例で C<||> を使うと、実際には以下のような意味になり open INFO, ( "< datafile" || die "can't open datafile: $!" ); @@ -161,8 +156,7 @@ =end original -which is definitely not what you want. -(TBT) +あなたが望んでいるのと全く違うことになります。 =begin original