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

Back to archive index

argra****@users***** argra****@users*****
2009年 1月 28日 (水) 20:46:34 JST


Index: docs/perl/5.8.8/perlpacktut.pod
diff -u docs/perl/5.8.8/perlpacktut.pod:1.10 docs/perl/5.8.8/perlpacktut.pod:1.11
--- docs/perl/5.8.8/perlpacktut.pod:1.10	Tue Jan 20 01:17:32 2009
+++ docs/perl/5.8.8/perlpacktut.pod	Wed Jan 28 20:46:34 2009
@@ -1,3 +1,6 @@
+
+=encoding euc-jp
+
 =head1 NAME
 
 =begin original
@@ -816,20 +819,23 @@
 
 =end original
 
-Each of the integer pack codes C<sSlLqQ> results in a fixed number of bytes,
-no matter where you execute your program. This may be useful for some 
-applications, but it does not provide for a portable way to pass data 
-structures between Perl and C programs (bound to happen when you call 
-XS extensions or the Perl function C<syscall>), or when you read or
-write binary files. What you'll need in this case are template codes that
-depend on what your local C compiler compiles when you code C<short> or
-C<unsigned long>, for instance. These codes and their corresponding
-byte lengths are shown in the table below.  Since the C standard leaves
-much leeway with respect to the relative sizes of these data types, actual
-values may vary, and that's why the values are given as expressions in
-C and Perl. (If you'd like to use values from C<%Config> in your program
-you have to import it with C<use Config>.)
-(TBT)
+整数 pack コード C<sSlLqQ> のそれぞれは、どこでプログラムが
+実行されたとしても固定長のバイト列となります。
+これは一部のアプリケーションでは有用ですが、(XS エクステンションや
+Perl 関数 C<syscall> を呼び出すときに必要となる)
+Perl と C のプログラムの間でデータ構造を渡す場合や、バイナリファイルを
+読み書きするときの、移植性のある手段は提供しません
+この場合に必要なものは、例えば、C<short> や C<unsigned long> と書いたときに
+ローカルの C コンパイラがどのようにコンパイルするかに依存する
+テンプレートコードです。
+これらのコードと、それに対応するバイト長は以下のテーブルの様になります。
+C 標準はそれぞれのデータ型の大きさの点で多くの自由裁量を残しているので、
+実際の値は異なるかもしれず、そしてこれがなぜ値が C と Perl の式として
+与えられているかの理由です。
+(もしプログラムで C<%Config> の値を使いたい場合は、C<use Config> として
+これをインポートする必要があります。)
+
+=begin original
 
    signed unsigned  byte length in C   byte length in Perl       
      s!     S!      sizeof(short)      $Config{shortsize}
@@ -837,6 +843,14 @@
      l!     L!      sizeof(long)       $Config{longsize}
      q!     Q!      sizeof(long long)  $Config{longlongsize}
 
+=end original
+
+  符号付き 符号なし C でのバイト長     Perl でのバイト長
+     s!       S!    sizeof(short)      $Config{shortsize}
+     i!       I!    sizeof(int)        $Config{intsize}
+     l!       L!    sizeof(long)       $Config{longsize}
+     q!       Q!    sizeof(long long)  $Config{longlongsize}
+
 =begin original
 
 The C<i!> and C<I!> codes aren't different from C<i> and C<I>; they are
@@ -975,15 +989,15 @@
 
 =end original
 
-The pack code for big-endian (high order byte at the lowest address) is
-C<n> for 16 bit and C<N> for 32 bit integers. You use these codes
-if you know that your data comes from a compliant architecture, but,
-surprisingly enough, you should also use these pack codes if you
-exchange binary data, across the network, with some system that you
-know next to nothing about.
+ビッグエンディアン(最下位アドレスが最上位バイト)での pack コードは、
+16 ビット整数が C<n>、 32 ビット整数が C<N> です。
+もし準拠したアーキテクチャからデータが来ることが分かっているなら
+これらのコードを使います;
+もしネットワークを通して何も知らない他のシステムとバイナリデータを
+交換する場合にもこれらの pack コードを使うべきです。
 理由は単純で、この順序が I<ネットワーク順序> として選ばれていて、標準を
 恐れる全てのプログラムがこの慣例に従っているはずだからです。
-(This is, of course, a stern
+(This is, of course, a stern 
 backing for one of the Lilliputian parties and may well influence the
 political development there.)
 それで、もし何バイトあるかの長さを先に送ることでメッセージを送ることを
@@ -1035,11 +1049,10 @@
 
 浮動小数点数を pack するには、you have the choice between the
 pack codes C<f> and C<d> which pack into (or unpack from) single-precision or
-double-precision representation as it is provided by your system. (There
-is no such thing as a network representation for reals, so if you want
-to send your real numbers across computer boundaries, you'd better stick
-to ASCII representation, unless you're absolutely sure what's on the other
-end of the line.)
+double-precision representation as it is provided by your system.
+(実数に対してはネットワーク表現のようなものはないので、もし他の
+コンピュータに実数を送りたい場合は、ネットワークの向こう側で何が起きるかが
+完全に分かっているのでない限りは、ASCII 表現で我慢した方がよいです。)
 (TBT)
 
 =head1 Exotic Templates
Index: docs/perl/5.8.8/perlxs.pod
diff -u docs/perl/5.8.8/perlxs.pod:1.10 docs/perl/5.8.8/perlxs.pod:1.11
--- docs/perl/5.8.8/perlxs.pod:1.10	Fri Jan 16 04:56:10 2009
+++ docs/perl/5.8.8/perlxs.pod	Wed Jan 28 20:46:34 2009
@@ -657,15 +657,14 @@
 
 =end original
 
-When you're using RETVAL to return an C<SV *>, there's some magic
-going on behind the scenes that should be mentioned. When you're
-manipulating the argument stack using the ST(x) macro, for example,
-you usually have to pay special attention to reference counts. (For
-more about reference counts, see L<perlguts>.) To make your life
-easier, the typemap file automatically makes C<RETVAL> mortal when
-you're returning an C<SV *>. Thus, the following two XSUBs are more
-or less equivalent:
-(TBT)
+C<SV *> を返すために RETVAL を使うとき、言及しておくべき魔法が舞台裏で
+行われます。
+例えば、ST(x) マクロを使って引数スタックを操作するとき、普通は
+参照カウントに特別な注意を払う必要があります。
+(参照カウントに関しては、L<perlguts> を参照してください。)
+人生をより簡単にするために、C<SV *> を返そうとしているときは
+typemap ファイルは自動的に C<RETVAL> を揮発性にします。
+従って、以下の 2 つの XSUB はだいたい等価です:
 
   void
   alpha()
@@ -690,11 +689,10 @@
 
 =end original
 
-This is quite useful as it usually improves readability. While
-this works fine for an C<SV *>, it's unfortunately not as easy
-to have C<AV *> or C<HV *> as a return value. You I<should> be
-able to write:
-(TBT)
+これは普通可読性を改善するのでかなり有用です。
+これは C<SV *> ではうまく動作する一方、残念ながら返り値として
+C<AV *> や C<HV *> を使うときには簡単ではありません。
+以下のように書ける I<べき> です:
 
   AV *
   array()
@@ -713,11 +711,11 @@
 
 =end original
 
-But due to an unfixable bug (fixing it would break lots of existing
-CPAN modules) in the typemap file, the reference count of the C<AV *>
-is not properly decremented. Thus, the above XSUB would leak memory
-whenever it is being called. The same problem exists for C<HV *>.
-(TBT)
+しかし typemap ファイルにある修正されていないバグのために(これを
+修正すると既存の多くの CPANモジュールが動かなくなります)、
+C<AV *> の参照カウントは適切にデクリメントされません。
+従って、上述の XSUB は、呼び出されるごとにメモリリークします。
+同じ問題は C<HV *> にもあります。
 
 =begin original
 
@@ -972,12 +970,11 @@
 'set' magic を起動する面倒を見るからです(ハッシュや配列の要素が
 存在しなかったとき、作成しなければならないので必要です)。
 もし何らかの理由でこの振る舞いが望ましくないなら、
-the OUTPUT section may contain a C<SETMAGIC: DISABLE> line
-to disable it for the remainder of the parameters in the OUTPUT section.
-Likewise,  C<SETMAGIC: ENABLE> can be used to reenable it for the
-remainder of the OUTPUT section.  See L<perlguts> for more details
-about 'set' magic.
-(TBT)
+OUTPUT セクションの残りのパラメータでこれを無効にするために、
+OUTPUT セクションには C<SETMAGIC: DISABLE> という行を含めることが出来ます。
+同様に、C<SETMAGIC: ENABLE> は OUTPUT セクションの残りのために
+再有効化するために使えます。
+'set' マジックに関するさらなる詳細については L<perlguts> を参照してください。
 
 =head2 The NO_OUTPUT Keyword
 
@@ -992,11 +989,10 @@
 
 =end original
 
-The NO_OUTPUT can be placed as the first token of the XSUB.  This keyword
-indicates that while the C subroutine we provide an interface to has
-a non-C<void> return type, the return value of this C subroutine should not
-be returned from the generated Perl subroutine.
-(TBT)
+NO_OUTPUT キーワードは XSUB の最初のトークンとして置くことが出来ます。
+このキーワードは、インターフェースを提供する C サブルーチンが C<void> でない
+返り値を持ちますが、この C サブルーチンからの返り値は生成された Perl
+サブルーチンから返されるべきではないことを示します。
 
 =begin original
 
@@ -1006,10 +1002,9 @@
 
 =end original
 
-With this keyword present L<The RETVAL Variable> is created, and in the
-generated call to the subroutine this variable is assigned to, but the value
-of this variable is not going to be used in the auto-generated code.
-(TBT)
+このキーワードが存在すると L<The RETVAL Variable> は作成され、
+サブルーチンへの生成された呼び出しの中でこの変数に代入されますが、
+この変数の値は自動生成されたコードの中では使われません。
 
 =begin original
 
@@ -1020,11 +1015,11 @@
 
 =end original
 
-This keyword makes sense only if C<RETVAL> is going to be accessed by the
-user-supplied code.  It is especially useful to make a function interface
-more Perl-like, especially when the C return value is just an error condition
-indicator.  For example,
-(TBT)
+このキーワードは、C<RETVAL> がユーザーが追加したコードによって
+アクセスされる場合にのみ意味があります。
+これは、関数インターフェースをより Perl 風にする場合、
+特に C の返り値が単にエラーを示すだけのものの場合に特に有用です。
+例えば、
 
   NO_OUTPUT int
   delete_file(char *name)
@@ -1267,18 +1262,14 @@
 
 =end original
 
-If the initialization begins with C<=>, then it is output in
-the declaration for the input variable, replacing the initialization
-supplied by the typemap.  If the initialization
-begins with C<;> or C<+>, then it is performed after
-all of the input variables have been declared.  In the C<;>
-case the initialization normally supplied by the typemap is not performed.
-For the C<+> case, the declaration for the variable will include the
-initialization from the typemap.  A global
-variable, C<%v>, is available for the truly rare case where
-information from one initialization is needed in another
-initialization.
-(TBT)
+初期化が C<=> で始まっていると、入力変数の宣言中に出力され、
+typemap によって提供された初期化を置き換えます。
+初期化が C<;> か C<+> で始まっていると、これは全ての入力変数が
+宣言された後に実行されます。
+C<;> の場合、typemap によって通常提供される初期化は実行されません。
+C<+> の場合、変数の宣言は typemap からの初期化に含まれます。
+グローバル変数 C<%v> は、ある初期化からの情報は他の初期化に必要になるという
+本当に珍しい場合のために利用可能です。
 
 =begin original
 
@@ -1307,14 +1298,13 @@
 
 =end original
 
-The construct C<\$v{timep}=@{[$v{timep}=$arg]}> used in the above
-example has a two-fold purpose: first, when this line is processed by
-B<xsubpp>, the Perl snippet C<$v{timep}=$arg> is evaluated.  Second,
-the text of the evaluated snippet is output into the generated C file
-(inside a C comment)!  During the processing of C<char *host> line,
-$arg will evaluate to C<ST(0)>, and C<$v{timep}> will evaluate to
-C<ST(1)>.
-(TBT)
+上述の例で使われている C<\$v{timep}=@{[$v{timep}=$arg]}> という構文は
+2 つの目的があります: 1 つ目に、この行が B<xsubpp> によって処理されると、
+Perl スニペット C<$v{timep}=$arg> が評価されます。
+2 つ目に、評価されたスニペットのテキストは生成された C ファイル
+(C コメントの内側) へ出力されます!
+C<char *host> の行の処理中に、$arg は C<ST(0)> に評価され、C<$v{timep}> は
+C<ST(1)> に評価されます。
 
 =head2 Default Parameter Values
 
@@ -1494,10 +1484,8 @@
 
 =end original
 
-The ability to put additional declarations before the typemap entries are
-processed is very handy in the cases when typemap conversions manipulate
-some global state:
-(TBT)
+typemap エントリが処理される前に追加の宣言を置く能力は、typemap 変換が
+グローバルな状態を操作する場合にはとても便利です:
 
     MyObject
     mutate(o)
@@ -1517,11 +1505,10 @@
 
 =end original
 
-Here we suppose that conversion to C<MyObject> in the INPUT: section and from
-MyObject when processing RETVAL will modify a global variable C<global_state>.
-After these conversions are performed, we restore the old value of
-C<global_state> (to avoid memory leaks, for example).
-(TBT)
+ここで、RETVAL の処理がグローバル変数 C<global_state> を変更するときに
+MyObject から INPUT: セクションで C<MyObject> に変換するとします。
+これらの変換が行われた後、(例えば、メモリリークを避けるために)
+C<global_state> の古い値を戻します。
 
 =begin original
 
@@ -1531,10 +1518,10 @@
 
 =end original
 
-There is another way to trade clarity for compactness: INPUT sections allow
-declaration of C variables which do not appear in the parameter list of
-a subroutine.  Thus the above code for mutate() can be rewritten as
-(TBT)
+ここにはもう一つの明快さと簡潔さのトレードオフがあります:
+INPUT セクションはサブルーチンの引数リストに現れない C 変数の宣言も
+許しています。
+従って mutate() のための上述のコードは以下のように書き直せます
 
     MyObject
     mutate(o)
@@ -1686,9 +1673,8 @@
 
 =end original
 
-Since INPUT sections allow declaration of C variables which do not appear
-in the parameter list of a subroutine, this may be shortened to:
-(TBT)
+INPUT セクションはサブルーチンの引数リストに現れない C 変数の宣言も
+許しているので、これは以下のように短く出来ます:
 
     bool_t
     rpcb_gettime(host,timep)
@@ -1712,11 +1698,10 @@
 
 =end original
 
-(We used our knowledge that input conversion for C<char *> is a "simple" one,
-thus C<host> is initialized on the declaration line, and our assignment
-C<h = host> is not performed too early.  Otherwise one would need to have the
-assignment C<h = host> in a CODE: or INIT: section.)
-(TBT)
+(C<char *> のための入力変換は「単純な」ものであるという知識を使っているので、
+C<host> は宣言行で初期化され、C<h = host> の代入は早すぎることはありません。
+さもなければ C<h = host> の代入は CODE: か INIT: のセクションで
+行う必要があります。)
 
 =head2 The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
 
@@ -1731,11 +1716,10 @@
 
 =end original
 
-In the list of parameters for an XSUB, one can precede parameter names
-by the C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT> keywords.
-C<IN> keyword is the default, the other keywords indicate how the Perl
-interface should differ from the C interface.
-(TBT)
+XSUB の引数リストの中で、引数名の前に
+C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT> キーワードを前置できます。
+C<IN> キーワードがデフォルトで、他のキーワードは Perl インターフェースが
+C インターフェースとどのように異なるかを示します。
 
 =begin original
 
@@ -1747,12 +1731,11 @@
 
 =end original
 
-Parameters preceded by C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT>
-keywords are considered to be used by the C subroutine I<via
-pointers>.  C<OUTLIST>/C<OUT> keywords indicate that the C subroutine
-does not inspect the memory pointed by this parameter, but will write
-through this pointer to provide additional return values.
-(TBT)
+C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT> が前置された引数は
+C サブルーチンから I<ポインタ経由で> 使われるとみなされます。
+C<OUTLIST>/C<OUT> キーワードは、C サブルーチンは
+この引数で示されているメモリを検査しないが、追加の返り値を
+このポインタを通して書き込むということを示しています。
 
 =begin original
 
@@ -1761,9 +1744,8 @@
 
 =end original
 
-Parameters preceded by C<OUTLIST> keyword do not appear in the usage
-signature of the generated Perl function.
-(TBT)
+C<OUTLIST> キーワードが前置された引数は、生成された Perl 関数の使用法
+シグネチャに現れません。
 
 =begin original
 
@@ -1776,13 +1758,11 @@
 
 =end original
 
-Parameters preceded by C<IN_OUTLIST>/C<IN_OUT>/C<OUT> I<do> appear as
-parameters to the Perl function.  With the exception of
-C<OUT>-parameters, these parameters are converted to the corresponding
-C type, then pointers to these data are given as arguments to the C
-function.  It is expected that the C function will write through these
-pointers.
-(TBT)
+C<IN_OUTLIST>/C<IN_OUT>/C<OUT> が前置された引数は Perl 関数の引数として
+I<現れます>。
+C<OUT>-引数の例外として、これらの引数は対応する C 型に変換され、それから
+それらのデータへのポインタが C 関数への引数として与えられます。
+これは C 関数がこれらのポインタを通して書き込むことを想定しています。
 
 =begin original
 
@@ -1795,13 +1775,13 @@
 
 =end original
 
-The return list of the generated Perl function consists of the C return value
-from the function (unless the XSUB is of C<void> return type or
-C<The NO_OUTPUT Keyword> was used) followed by all the C<OUTLIST>
-and C<IN_OUTLIST> parameters (in the order of appearance).  On the
-return from the XSUB the C<IN_OUT>/C<OUT> Perl parameter will be
-modified to have the values written by the C function.
-(TBT)
+生成された Perl 関数の返り値リストは、関数からの C の返り値
+(XSUB の返り値型が C<void> であるか、
+C<The NO_OUTPUT Keyword> が使わた場合を除く)に、
+全ての C<OUTLIST> および C<IN_OUTLIST> 引数を(出現順に)
+続けたものとなります。
+XSUB からの返り時に、C<IN_OUT>/C<OUT> Perl 引数は C 関数によって書かれた
+値に変更されます。
 
 =begin original
 
@@ -1869,13 +1849,11 @@
 
 =end original
 
-The C<IN_OUT> parameters are identical with parameters introduced with
-L<The & Unary Operator> and put into the C<OUTPUT:> section (see
-L<The OUTPUT: Keyword>).  The C<IN_OUTLIST> parameters are very similar,
-the only difference being that the value C function writes through the
-pointer would not modify the Perl parameter, but is put in the output
-list.
-(TBT)
+C<IN_OUT> 引数は、L<The & Unary Operator> で導入されて
+C<OUTPUT:> セクション (L<The OUTPUT: Keyword> を参照してください) に
+置かれた引数と同じです。
+C<IN_OUTLIST> 引数はとても似ていて、唯一の違いは、C 関数がポインタを
+通して書いた値は Perl 引数を変更せず、出力リストに置かれるということです。
 
 =begin original
 
@@ -1887,12 +1865,10 @@
 
 =end original
 
-The C<OUTLIST>/C<OUT> parameter differ from C<IN_OUTLIST>/C<IN_OUT>
-parameters only by the initial value of the Perl parameter not
-being read (and not being given to the C function - which gets some
-garbage instead).  For example, the same C function as above can be
-interfaced with as
-(TBT)
+C<OUTLIST>/C<OUT> 引数は、Perl 引数の初期値が読み込まれない
+(そして C 関数に渡されない - 代わりに何らかのごみが渡されます)という
+点においてだけ、C<IN_OUTLIST>/C<IN_OUT> 引数と異なります。
+例えば、上述の同じ C 関数は以下のようなインターフェースか:
 
   void day_month(OUT int day, int unix_time, OUT int month);
 
@@ -1937,11 +1913,12 @@
 
 =end original
 
-If one of the input arguments to the C function is the length of a string
-argument C<NAME>, one can substitute the name of the length-argument by
-C<length(NAME)> in the XSUB declaration.  This argument must be omitted when
-the generated Perl function is called.  E.g.,
-(TBT)
+C 関数への入力引数の 1 つが文字列引数 C<NAME> の長さの場合、
+XSUB 宣言において長さ引数の名前を C<length(NAME)> で置き換えることが
+できます。
+この引数は、生成された Perl 関数が呼び出されるときには
+省略されなければなりません。
+例えば:
 
   void
   dump_chars(char *s, short l)
@@ -1975,7 +1952,7 @@
 
 =head2 Variable-length Parameter Lists
 
-(可変長パラメータリスト)
+(可変長引数リスト)
 
 =begin original
 
@@ -1988,12 +1965,12 @@
 
 =end original
 
-XSUB は、パラメータリストで C<(...)> という省略記法で指定することによって、
-可変長のパラメータリストを取ることができます。
+XSUB は、引数リストで C<(...)> という省略記法で指定することによって、
+可変長の引数リストを取ることができます。
 この省略記法の仕様は ANSI C にあるものと似ています。
 プログラマは XSUB に渡された引数の数を、B<xsubpp> コンパイラがすべての
 XSUB に提供する C<items> という変数をチェックすることによって決定できます。
-この機構を使うことによって、長さが不定のパラメータリストを
+この機構を使うことによって、長さが不定の引数リストを
 受け付ける XSUB を作成できます。
 
 =begin original
@@ -2005,8 +1982,8 @@
 
 =end original
 
-rpcb_gettime() XSUB に対する I<host> パラメータは省略できるので、XSUB が
-パラメータの変化する個数を取ることを示すために省略記法が使えます。
+rpcb_gettime() XSUB に対する I<host> 引数は省略できるので、XSUB が
+引数の変化する個数を取ることを示すために省略記法が使えます。
 Perl はこの XSUB を以下に示す文のいずれかで呼び出すことができます。
 
      $status = rpcb_gettime( $timep, $host );
@@ -4070,11 +4047,11 @@
 
 =end original
 
-This macro is used to define a unique key to refer to the static data
-for an XS module. The suggested naming scheme, as used by h2xs, is to
-use a string that consists of the module name, the string "::_guts"
-and the module version number.
-(TBT)
+このマクロは、XS モジュールのための静的データを参照するためのユニークな
+キーを定義するために使われます。
+h2xs で使われている、推奨される命名スキームは、モジュール名、
+文字列 "::_guts"、モジュールのバージョン番号、からなる文字列を
+使うことです。
 
     #define MY_CXT_KEY "MyModule::_guts" XS_VERSION
 
@@ -4097,9 +4074,8 @@
 
 =end original
 
-Declare a typedef named C<my_cxt_t> that is a structure that contains
-all the data that needs to be interpreter-local.
-(TBT)
+インタプリタローカルにする必要がある全てのデータを含む構造体である
+C<my_cxt_t> という名前の typedef を宣言します。
 
     typedef struct {
         int some_value;
@@ -4114,9 +4090,7 @@
 
 =end original
 
-Always place the START_MY_CXT macro directly after the declaration
-of C<my_cxt_t>.
-(TBT)
+C<my_cxt_t> の宣言の直後には常に START_MY_CXT マクロを置きます。
 
 =item MY_CXT_INIT
 



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