[perldocjp-cvs 311] CVS update: docs/perl/5.8.8

Back to archive index

argra****@users***** argra****@users*****
2008年 12月 3日 (水) 17:57:07 JST


Index: docs/perl/5.8.8/perlmod.pod
diff -u docs/perl/5.8.8/perlmod.pod:1.4 docs/perl/5.8.8/perlmod.pod:1.5
--- docs/perl/5.8.8/perlmod.pod:1.4	Sat Aug 23 06:10:14 2008
+++ docs/perl/5.8.8/perlmod.pod	Wed Dec  3 17:57:07 2008
@@ -1,3 +1,6 @@
+
+=encoding euc-jp
+
 =head1 NAME
 
 =begin original
@@ -44,7 +47,7 @@
 Perlは、他のパッケージの変数によってあるパッケージが壊されるのを
 防ぐために、選択的名前空間(alternative namespace)の機構を提供しています。
 実際のところ、グローバル変数は Perl にはないのです。
-パッケージ文は、コンパイル単位を与えられた名前空間にあるように宣言します。
+package 文は、コンパイル単位を与えられた名前空間にあるように宣言します。
 そのパッケージ宣言のスコープは宣言それ自身から、宣言を囲むブロック、
 または C<eval>、ファイルの最初に現れたものまでです
 (my() や locla() 演算子のスコープと同じ)。
@@ -89,8 +92,8 @@
 それは以前のシングルクォートが Ada プログラマに馴染みのもので
 あったことと同じです。
 古い構文も互換性のためにまだサポートされているので、
-C<"This is $owner's house"> のようにすることもできます。
-これは C<$owner::s> をアクセスします。
+C<"This is $owner's house"> のようにすると、これは C<$owner::s> を
+アクセスします;
 つまり、パッケージ C<owner> にある $s という変数をアクセスするのですが、
 これはあなたの望んだ動作ではないでしょう。
 C<"This is ${owner}'s house"> のようにブレースを使うことによって
@@ -288,7 +291,7 @@
 
 =end original
 
-型グロブに対する代入は、エイリアス操作を行います。
+型グロブに対する代入は、エイリアス操作を行います;
 例えば:
 
     *dick = *richard;
@@ -339,9 +342,9 @@
 
 =end original
 
-C<*foo = *bar> makes the typeglobs themselves synonymous while
-C<*foo = \$bar> makes the SCALAR portions of two distinct typeglobs
-refer to the same scalar value.
+C<*foo = *bar> は型グロブそのものを同期させますが、一方
+C<*foo = \$bar> 同じスカラ値を示す二つの区別した型グロブの SCALAR 部を
+作ります。
 これが意味するのは、以下のコードは:
 
     $bar = 1;
@@ -366,11 +369,10 @@
 C<$foo> は I<元の> C<$bar> -- C<local()> によって追いやられ、ブロックが
 終わる時に復元されるもの -- へのリファレンスを保持しているので '1' が
 表示されます。
-Because variables are accessed through the
-typeglob, you can use C<*foo = *bar> to create an alias which can be
-localized. (But be aware that this means you can't have a separate
-C<@foo> and C<@bar>, etc.)
-(TBT)
+変数は型グロブを通してアクセスされるので、ローカル化できるエイリアスを
+作るために C<*foo = *bar> とすることができます。
+(しかし、これは C<@foo> と C<@bar> などを別々に保持することが
+できないということに注意してください。)
 
 =begin original
 
@@ -381,15 +383,21 @@
 
 =end original
 
-What makes all of this important is that the Exporter module uses glob
-aliasing as the import/export mechanism. Whether or not you can properly
-localize a variable that has been exported from a module depends on how
-it was exported:
-(TBT)
+これらのことが重要である理由は、Exporter モジュールはインポート/エクスポート
+機構としてグロブによるエイリアスを使うからです。
+モジュールからエクスポートされた変数を適切にローカル化できるかどうかは
+どのようにエクスポートされたかに依存します:
+
+=begin original
 
     @EXPORT = qw($FOO); # Usual form, can't be localized
     @EXPORT = qw(*FOO); # Can be localized
 
+=end original
+
+    @EXPORT = qw($FOO); # 通常の形式、ローカル化できない
+    @EXPORT = qw(*FOO); # ローカル化できる
+
 =begin original
 
 You can work around the first case by using the fully qualified name
@@ -398,10 +406,9 @@
 
 =end original
 
-You can work around the first case by using the fully qualified name
-(C<$Package::FOO>) where you need a local value, or by overriding it
-by saying C<*FOO = *Package::FOO> in your script.
-(TBT)
+1 つ目の場合は、ローカルな値が必要なところで完全修飾名
+(C<$Package::FOO>) を使うか、プログラム中で C<*FOO = *Package::FOO> として
+上書きすることで回避できます。
 
 =begin original
 
@@ -412,12 +419,14 @@
 
 =end original
 
-C<*x = \$y> 機構は全てをコピーすることを望まないのであれば、低コストな
+C<*x = \$y> 機構は、全てをコピーすることを望まないときに、低コストな
 リファレンスをサブルーチンに渡したりサブルーチンから返すために
 使うことができます。
 これは動的変数に対する代入のときにのみ働き、レキシカル変数では
 働きません。
 
+=begin original
+
     %some_hash = ();			# can't be my()
     *some_hash = fn( \%another_hash );
     sub fn {
@@ -428,6 +437,18 @@
 	return \%nhash;
     }
 
+=end original
+
+    %some_hash = ();			# my() にできない
+    *some_hash = fn( \%another_hash );
+    sub fn {
+	local *hashsym = shift;
+	# ここで %hashsym を普通に使うと、
+	# 呼び出し元の %another_hash に影響を与える
+	my %nhash = (); # したいことをする
+	return \%nhash;
+    }
+
 =begin original
 
 On return, the reference will overwrite the hash slot in the
@@ -634,14 +655,13 @@
 
 =end original
 
-These code blocks can be prefixed with C<sub> to give the appearance of a
-subroutine (although this is not considered good style).  One should note
-that these code blocks don't really exist as named subroutines (despite
-their appearance). The thing that gives this away is the fact that you can
-have B<more than one> of these code blocks in a program, and they will get
-B<all> executed at the appropriate moment.  So you can't execute any of
-these code blocks by name.
-(TBT)
+これらのコードブロックは、サブルーチンのような見た目を与えるために
+C<sub> を前置できます(しかしこれはよいスタイルとは考えられていません)。
+これらのコードブロックは実際には(その見た目に反して)名前付きサブルーチンの
+ようには存在していないということは注意するべきでしょう。
+これで明かされることは、これらのコードブロックはプログラム中に B<複数>
+持つことができ、B<全て> が適切な瞬間に実行されるということです。
+従って、これらのコードブロックはどれも名前で実行できません。
 
 =begin original
 
@@ -754,7 +774,7 @@
 
 =end original
 
-C<CHECK> コードブロックは、B<初期の> Perl コンパイルフェーズ終了直後、
+C<CHECK> コードブロックは、B<最初の> Perl コンパイルフェーズ終了直後、
 実行時が開始する直前に、LIFO 順で実行されます。
 C<CHECK> コードブロックは Perl コンパイラスイートがプログラムのコンパイル
 状態を保存するために使われます。
@@ -768,11 +788,10 @@
 
 =end original
 
-C<INIT> blocks are run just before the Perl runtime begins execution, in
-"first in, first out" (FIFO) order. For example, the code generators
-documented in L<perlcc> make use of C<INIT> blocks to initialize and
-resolve pointers to XSUBs.
-(TBT)
+C<INIT> ブロックは Perl ランタイムが実行を開始する直前に、「先入れ先出し」
+(FIFO) 順で実行されます。
+例えば、L<perlcc> で文書化されているコードジェネレータは C<INIT> ブロックを
+初期化と、XSUB へのポインタの解決に使います。
 
 =begin original
 
@@ -1219,20 +1238,21 @@
 
 iスレッドはデータツリーをクローン化することで動作するので、スレッド間では
 何のデータも共有されません。
-These threads can be used by using the C<threads>
-module or by doing fork() on win32 (fake fork() support). When a
-thread is cloned all Perl data is cloned, however non-Perl data cannot
-be cloned automatically.  Perl after 5.7.2 has support for the C<CLONE>
-special subroutine.  In C<CLONE> you can do whatever
-you need to do,
-like for example handle the cloning of non-Perl data, if necessary.
-C<CLONE> will be called once as a class method for every package that has it
-defined (or inherits it).  It will be called in the context of the new thread,
-so all modifications are made in the new area.  Currently CLONE is called with
-no parameters other than the invocant package name, but code should not assume
-that this will remain unchanged, as it is likely that in future extra parameters
-will be passed in to give more information about the state of cloning.
-(TBT)
+これらのスレッドは、C<threads> を使うか、win32 で fork() を行う
+(偽の fork() 対応)ことで使われます。
+スレッドがクローン化されると、全ての Perl のデータはクローン化されますが、
+非 Perl データは自動的にはクローン化できません。
+5.7.2 以降の Perl は C<CLONE> 特殊サブルーチンに対応しています。
+C<CLONE> 内部では、例えば(もし必要なら)非 perl データのクローン化の
+処理といった、必要なことはなんでもできます。
+C<CLONE> は定義(または継承)されたパッケージ毎に一度、クラスメソッドとして
+呼び出されます。
+これは新しいスレッドのコンテキストで呼び出されるので、全ての変更は
+新しいスレッドで行われます。
+現在のところ CLONE は呼び出し元のパッケージ名以外の引数なしで
+呼び出されますが、コード側はこれがずっと続くと仮定するべきではありません;
+将来、クローン化の状態についてさらなる情報を与えるために追加の引数が
+渡されるかもしれないからです。
 
 =begin original
 
@@ -1260,7 +1280,7 @@
 
 =end original
 
-5.8.7 以降の Perl はC<CLONE_SKIP> 特殊サブルーチンに対応しています。
+5.8.7 以降の Perl は C<CLONE_SKIP> 特殊サブルーチンに対応しています。
 C<CLONE> と同様、C<CLONE_SKIP> はパッケージ毎に 1 回呼び出されます;
 しかし、これはクローン化が開始する直前に、親スレッドのコンテキストで
 呼び出されます。
@@ -1281,11 +1301,9 @@
 
 =end original
 
-Like C<CLONE>, C<CLONE_SKIP> is currently called with no parameters other
-than the invocant package name, although that may change. Similarly, to
-allow for future expansion, the return value should be a single C<0> or
-C<1> value.
-(TBT)
+C<CLONE> と同様に、C<CLONE_SKIP> は現在のところ呼び出し元のパッケージ名
+以外の引数なしで呼び出されますが、これは変更されるかもしれません。
+同様に、将来の拡張のために、返り値は単一の C<0> か C<1> であるべきです。
 
 =head1 SEE ALSO
 
@@ -1306,15 +1324,15 @@
 クラスに関する一般的なスタイルについては L<perlmodlib> を参照してください。
 Perl の標準インポート/エクスポート機構がどのように動作しているのかは
 L<Exporter> を、クラスの作成に関する詳細なチュートリアルは
-L<perltoot> と L<perltooc> を、オブジェクトに関するハードコアなリファレンスの
-ドキュメントは L<perlobj> を、関数とスコーピングの説明は L<perlsub> を、
-エクステンションモジュールの記述に関する詳細は L<perlxstut> と
-L<perlguts> を参照してください。
+L<perltoot> と L<perltooc> を、オブジェクトに関するハードコアな
+リファレンスのドキュメントは L<perlobj> を、関数とスコーピングの説明は
+L<perlsub> を、エクステンションモジュールの記述に関する詳細は
+L<perlxstut> と L<perlguts> を参照してください。
 
 =begin meta
 
 Created: KIMURA Koichi
-Updated: Kentaro Shirakata <argra****@ub32*****>
+Updated: Kentaro Shirakata <argra****@ub32*****> (5.8.8-)
 
 =end meta
 


perldocjp-cvs メーリングリストの案内
Back to archive index