[perldocjp-cvs 1379] CVS update: docs/perl/5.10.1

Back to archive index

argra****@users***** argra****@users*****
2011年 12月 14日 (水) 01:17:19 JST


Index: docs/perl/5.10.1/perlpragma.pod
diff -u docs/perl/5.10.1/perlpragma.pod:1.1 docs/perl/5.10.1/perlpragma.pod:1.2
--- docs/perl/5.10.1/perlpragma.pod:1.1	Tue Sep 13 05:58:08 2011
+++ docs/perl/5.10.1/perlpragma.pod	Wed Dec 14 01:17:19 2011
@@ -22,14 +22,16 @@
 
 =end original
 
-A pragma is a module which influences some aspect of the compile time or run
-time behaviour of Perl, such as C<strict> or C<warnings>. With Perl 5.10 you
-are no longer limited to the built in pragmata; you can now create user
-pragmata that modify the behaviour of user functions within a lexical scope.
-(TBT)
+プラグマは、C<strict> や C<warnings> のように、コンパイル時や実行時の Perl の
+振る舞いにある種の影響を与えるモジュールです。
+Perl 5.10 から、プラグマは組み込みのものに制限されません; レキシカル
+スコープ内のユーザー関数の振る舞いを変えるユーザープラグマを
+作れるようになりました。
 
 =head1 A basic example
 
+(基本的な例)
+
 =begin original
 
 For example, say you need to create a class implementing overloaded
@@ -38,10 +40,10 @@
 
 =end original
 
-For example, say you need to create a class implementing overloaded
-mathematical operators, and would like to provide your own pragma that
-functions much like C<use integer;> You'd like this code
-(TBT)
+例えば、オーバーロードされた算術演算子を実装するクラスを作る必要が
+あるとして、C<use integer;> のように働く独自のプラグマを提供したいと
+します。
+以下のようなコードで
 
     use MyMaths;
     
@@ -69,8 +71,7 @@
 
 =end original
 
-to give the output
-(TBT)
+以下のように出力されます
 
     A: 4.6
     B: 4
@@ -86,10 +87,9 @@
 
 =end original
 
-I<i.e.>, where C<use myint;> is in effect, addition operations are forced
-to integer, whereas by default they are not, with the default behaviour being
-restored via C<no myint;>
-(TBT)
+I<つまり>、C<use myint;> が有効のときには家宝演算子は整数に強制され、
+一方デフォルトではそうではありませんし、デフォルトの振る舞いは
+C<no myint;> で復元されています。
 
 =begin original
 
@@ -98,9 +98,7 @@
 
 =end original
 
-The minimal implementation of the package C<MyMaths> would be something like
-this:
-(TBT)
+C<MyMaths> パッケージの最低限の実装は以下のようなものです:
 
     package MyMaths;
     use warnings;
@@ -130,9 +128,8 @@
 
 =end original
 
-Note how we load the user pragma C<myint> with an empty list C<()> to
-prevent its C<import> being called.
-(TBT)
+C<import> が呼び出されないようにユーザープラグマ C<myint> を空リスト
+C<()> 付きで呼び出す方法に注意してください。
 
 =begin original
 
@@ -140,8 +137,7 @@
 
 =end original
 
-The interaction with the Perl compilation happens inside package C<myint>:
-(TBT)
+Perl コンパイラとの相互作用はパッケージ C<myint> の内側で起こります:
 
     package myint;
     
@@ -171,9 +167,8 @@
 
 =end original
 
-As pragmata are implemented as modules, like any other module, C<use myint;>
-becomes
-(TBT)
+他のモジュールと同様、プラグマもモジュールとして実装され、C<use myint;> は
+以下のようになり:
 
     BEGIN {
         require myint;
@@ -186,8 +181,7 @@
 
 =end original
 
-and C<no myint;> is
-(TBT)
+C<no myint;> は以下のようになります:
 
     BEGIN {
         require myint;
@@ -201,9 +195,8 @@
 
 =end original
 
-Hence the C<import> and C<unimport> routines are called at B<compile time>
-for the user's code.
-(TBT)
+従って C<import> と C<unimport> のルーチンはユーザーコードの
+B<コンパイル時> に呼び出されます。
 
 =begin original
 
@@ -220,20 +213,21 @@
 
 =end original
 
-User pragmata store their state by writing to the magical hash C<%^H>,
-hence these two routines manipulate it. The state information in C<%^H> is
-stored in the optree, and can be retrieved at runtime with C<caller()>, at
-index 10 of the list of returned results. In the example pragma, retrieval
-is encapsulated into the routine C<in_effect()>, which takes as parameter
-the number of call frames to go up to find the value of the pragma in the
-user's script. This uses C<caller()> to determine the value of
-C<$^H{myint}> when each line of the user's script was called, and
-therefore provide the correct semantics in the subroutine implementing the
-overloaded addition.
-(TBT)
+ユーザープラグマは、マジカルなハッシュ C<%^H> に書き込むことで状態を
+保持するので、これらの二つのサブルーチンはこれを操作します。
+C<%^H> の状態情報は構文木に保管され、C<caller()> から返されたリストの
+インデックス 10 の要素としてして実行中に取得できます。
+例のプラグマでは、返されたものはユーザースクリプトのプラグマの値を
+見つけるために上がっていく呼び出しフレームの数をパラメータとして受け取る
+C<in_effect()> ルーチンでカプセル化されます。
+これはユーザーのスクリプトの各行が呼び出されるときに C<$^H{myint}> の
+値を決定するために C<caller()> を使うので、オーバーロードされた加算を
+実装しているサブルーチン内で正しい意味論を提供します。
 
 =head1 Implementation details
 
+(実装の詳細)
+
 =begin original
 
 The optree is shared between threads.  This means there is a possibility that
@@ -249,17 +243,17 @@
 
 =end original
 
-The optree is shared between threads.  This means there is a possibility that
-the optree will outlive the particular thread (and therefore the interpreter
-instance) that created it, so true Perl scalars cannot be stored in the
-optree.  Instead a compact form is used, which can only store values that are
-integers (signed and unsigned), strings or C<undef> - references and
-floating point values are stringified.  If you need to store multiple values
-or complex structures, you should serialise them, for example with C<pack>.
-The deletion of a hash key from C<%^H> is recorded, and as ever can be
-distinguished from the existence of a key with value C<undef> with
-C<exists>.
-(TBT)
+構文木はスレッド間で共有されます。
+つまり、構文木はそれを作った特定のスレッド(従ってインタプリタ実体)よりも
+長生きする可能性があると言うことです。
+従って、真の Perl スカラを構文木に保管することが出来ません。
+圧縮形式を使う代わりに、整数(符号付きと符号なし)、文字列、C<undef> の
+いずれかの値のみを保管できます - リファレンスと浮動小数点数は
+文字列化されます。
+もし複数の値や複雑な構造体を保管する必要があるなら、例えば C<pack> などを
+使って直列化するべきです。
+C<%^H> からのハッシュキーの削除は記録され、いままで通り C<exists> を使うことで
+値が C<undef> でキーが存在することと区別できます。
 
 =begin original
 
@@ -272,10 +266,16 @@
 
 =end original
 
-B<Don't> attempt to store references to data structures as integers which
-are retrieved via C<caller> and converted back, as this will not be threadsafe.
-Accesses would be to the structure without locking (which is not safe for
-Perl's scalars), and either the structure has to leak, or it has to be
-freed when its creating thread terminates, which may be before the optree
-referencing it is deleted, if other threads outlive it.
-(TBT)
+リファレンスをC<caller> 経由で取得して変換し直した整数としてデータ構造に
+保管しようとしてはいけません; これはスレッドセーフではないからです。
+アクセスはロックなしでの構造体に対してであり(これは Perl のスカラに対しては
+安全ではありません)、構造体がメモリリークするか、作成したスレッドが終了時に
+解放され、もしもし他のスレッドが長生きしすぎると、構文木が削除されたものを
+参照することになります。
+
+=begin meta
+
+Translate: SHIRAKATA Kentaro <argra****@ub32*****>
+
+=end meta
+



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