Kentaro Shirakata
argra****@users*****
2007年 7月 31日 (火) 16:26:45 JST
Index: docs/perl/5.8.4/perlfunc.pod diff -u docs/perl/5.8.4/perlfunc.pod:1.1 docs/perl/5.8.4/perlfunc.pod:1.2 --- docs/perl/5.8.4/perlfunc.pod:1.1 Thu Jul 26 02:18:54 2007 +++ docs/perl/5.8.4/perlfunc.pod Tue Jul 31 16:26:45 2007 @@ -1405,10 +1405,9 @@ =end original -If the C<encoding> pragma is in scope then the lengths returned are -calculated from the length of C<$/> in Unicode characters, which is not -always the same as the length of C<$/> in the native encoding. -(TBT) +スコープ内で C<encoding> プラグマがあると、返される長さは Unicode 文字の +C<$/> の長さから計算され、ネイティブエンコーディングでの C<$/> の長さと +いつも同じとは限りません。 =begin original @@ -1421,13 +1420,13 @@ =end original -Note that parentheses are necessary when you're chomping anything -that is not a simple variable. This is because C<chomp $cwd = `pwd`;> -is interpreted as C<(chomp $cwd) = `pwd`;>, rather than as -C<chomp( $cwd = `pwd` )> which you might expect. Similarly, -C<chomp $a, $b> is interpreted as C<chomp($a), $b> rather than -as C<chomp($a, $b)>. -(TBT) +単純な変数以外のものを chomp する場合はかっこが必要であることに +注意してください。 +これは、C<chomp $cwd = `pwd`;> は、予測している +C<chomp( $cwd = `pwd` )> ではなく、C<(chomp $cwd) = `pwd`;> と +解釈されるからです。 +同様に、C<chomp $a, $b> ではなく、C<chomp($a, $b)> C<chomp($a), $b> と +解釈されます。 =item chop VARIABLE @@ -1899,13 +1898,11 @@ =end original -Traditionally the result is a string of 13 bytes: two first bytes of -the salt, followed by 11 bytes from the set C<[./0-9A-Za-z]>, and only -the first eight bytes of the encrypted string mattered, but -alternative hashing schemes (like MD5), higher level security schemes -(like C2), and implementations on non-UNIX platforms may produce -different strings. -(TBT) +伝統的には結果は 13 バイトの文字列です: 最初の 2 バイトは salt、引き続いて +集合 C<[./0-9A-Za-z]> からの 11 バイトで、暗号化された文字列の最初の +8 バイトだけが意味がありますが、(MD5 のように) 異なったハッシュ手法、 +(C2 のような) 高レベルセキュリティ手法、非 UNIX プラットフォームでの +実装などでは異なった文字列が生成されることがあります。 =begin original @@ -2509,12 +2506,12 @@ =end original -If LIST is empty and C<$@> contains an object reference that has a -C<PROPAGATE> method, that method will be called with additional file -and line number parameters. The return value replaces the value in -C<$@>. ie. as if C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >> -were called. -(TBT) +LIST が空で、C<$@> が C<PROPAGATE> メソッドを含むオブジェクトへの +リファレンスを含む場合、このメソッドが追加ファイルと行番号を引数として +呼び出されます。 +返り値は C<$@> の値を置き換えます。 +つまり、C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >> が +呼び出されたかのようになります。 =begin original @@ -3881,10 +3878,9 @@ =end original -Note that the fcntl(2) emulation of flock(3) requires that FILEHANDLE -be open with read intent to use LOCK_SH and requires that it be open -with write intent to use LOCK_EX. -(TBT) +flock(3) の fcntl(2) エミュレーションは、 LOCK_SH を使うためには +FILEHANDLE を読み込みで開いている必要があり、LOCK_EX を使うためには +書き込みで開いている必要があることに注意してください。 =begin original @@ -4253,13 +4249,12 @@ =end original -Note for Linux users: on Linux, the C functions C<getpid()> and -C<getppid()> return different values from different threads. In order to -be portable, this behavior is not reflected by the perl-level function -C<getppid()>, that returns a consistent value across threads. If you want -to call the underlying C<getppid()>, you may use the CPAN module -C<Linux::Pid>. -(TBT) +Linux ユーザーへの注意: Linux では C<getpid()> と C<getppid()> の C 関数は +スレッドが異なると異なった値を返します。 +移植性のために、この振る舞いは perl レベルの関数 C<getppid()> には +反映されず、スレッドをまたいで一貫性のある値を返します。 +基礎となる C<getppid()> を呼び出したい場合は、CPAN モジュールである +C<Linux::Pid> を使ってください。 =item getpriority WHICH,WHO @@ -5905,11 +5900,10 @@ =end original -Note that according to the POSIX 1003.1-1996 the FILENAME may have any -number of trailing slashes. Some operating and filesystems do not get -this right, so Perl automatically removes all trailing slashes to keep -everyone happy. -(TBT) +POSIX 1003.1-1996 によれば、FILENAME には末尾に任意の数のスラッシュを +つけることができます。 +このようには動かない OS やファイルシステムもあるので、Perl はみんなが +幸せになれるように、自動的に末尾のスラッシュを削除します。 =item msgctl ID,CMD,ARG @@ -6186,6 +6180,7 @@ =end original +EXPR で与えられたファイル名のファイルを開き、FILEHANDLE と結び付けます。 =begin original @@ -6194,6 +6189,8 @@ =end original +(以下は総合的な open() のリファレンスです: より親切な説明については +L<perlopentut> を参照してください。) =begin original @@ -6205,6 +6202,12 @@ =end original +If FILEHANDLE is an undefined scalar variable (or array or hash element) +the variable is assigned a reference to a new anonymous filehandle, +otherwise if FILEHANDLE is an expression, its value is used as the name of +the real filehandle wanted. (This is considered a symbolic reference, so +C<use strict 'refs'> should I<not> be in effect.) +(TBT) =begin original @@ -6215,6 +6218,11 @@ =end original +If EXPR is omitted, the scalar variable of the same name as the +FILEHANDLE contains the filename. (Note that lexical variables--those +declared with C<my>--will not work for this purpose; so if you're +using C<my>, specify EXPR in your call to open.) +(TBT) =begin original @@ -6226,6 +6234,12 @@ =end original +If three or more arguments are specified then the mode of opening and +the file name are separate. If MODE is C<< '<' >> or nothing, the file +is opened for input. If MODE is C<< '>' >>, the file is truncated and +opened for output, being created if necessary. If MODE is C<<< '>>' >>>, +the file is opened for appending, again being created if necessary. +(TBT) =begin original @@ -6240,6 +6254,15 @@ =end original +You can put a C<'+'> in front of the C<< '>' >> or C<< '<' >> to +indicate that you want both read and write access to the file; thus +C<< '+<' >> is almost always preferred for read/write updates--the C<< +'+>' >> mode would clobber the file first. You can't usually use +either read-write mode for updating textfiles, since they have +variable length records. See the B<-i> switch in L<perlrun> for a +better approach. The file is created with permissions of C<0666> +modified by the process' C<umask> value. +(TBT) =begin original @@ -6371,11 +6394,10 @@ =end original -will open the UTF-8 encoded file containing Unicode characters, -see L<perluniintro>. (Note that if layers are specified in the -three-arg form then default layers set by the C<open> pragma are -ignored.) -(TBT) +は、Unicode 文字を含む UTF-8 エンコードされたファイルを開きます; +L<perlruniintro> を参照してください。 +(3 引数形式で層を指定すると、C<open> プラグまでセットしたデフォルト層は +無視されることに注意してください。) =begin original @@ -7088,13 +7110,12 @@ =end original -The exact semantics and interface of TYPE and ATTRS are still -evolving. TYPE is currently bound to the use of C<fields> pragma, -and attributes are handled using the C<attributes> pragma, or starting -from Perl 5.8.0 also via the C<Attribute::Handlers> module. See -L<perlsub/"Private Variables via my()"> for details, and L<fields>, -L<attributes>, and L<Attribute::Handlers>. -(TBT) +TYPE と ATTRS の正確な文法とインターフェースは今でも進化しています。 +現在のところ、TYPE は C<fields> プラグマの使用と結び付けられていて、 +属性は C<attributes> プラグマか、Perl 5.8.0 からは +C<Attribute::Handlers> モジュールと結び付けられています。 +詳しくはL<perlsub/"Private Variables via my()">, L<fields>, +L<attributes>, L<Attribute::Handlers> を参照してください。 =begin original @@ -7154,11 +7175,10 @@ =end original -Warning: the current implementation of this attribute operates on the -typeglob associated with the variable; this means that C<our $x : unique> -also has the effect of C<our @x : unique; our %x : unique>. This may be -subject to change. -(TBT) +警告: この属性の現在の実装は、変数と結び付けられた型グロブを操作します; +これは C<our $x : unique> は C<our @x : unique; our %x : unique> という +効果があることを意味します。 +これは変更される予定です。 =item pack TEMPLATE,LIST @@ -7341,10 +7361,10 @@ F ネイティブフォーマットの浮動小数点数 (Perl 内部浮動小数点数 NV) - D ネイティブフォーマットの長い倍精度浮動小数点数 - (Long doubles are available only if your system supports long - double values _and_ if Perl has been compiled to support those. - Causes a fatal error otherwise.)(TBT) + D ネイティブフォーマットの長い倍精度浮動小数点数(long double) + (long double は、システムが long double に対応していて、かつ Perl が + long double 対応としてコンパイルされている場合にのみ使用可能です。 + それ以外の場合は致命的エラーが発生します。) =begin original @@ -9049,11 +9069,10 @@ =end original -Specifying VERSION as a literal of the form v5.6.1 should generally be -avoided, because it leads to misleading error messages under earlier -versions of Perl which do not support this syntax. The equivalent numeric -version should be used instead. -(TBT) +VERSION に v5.6.1 の形のリテラルを指定することは一般的には避けるべきです; +なぜなら、この文法に対応していない Perl の初期のバージョンでは +誤解させるようなエラーメッセージが出るからです。 +代わりに等価な数値表現を使うべきです。 require v5.6.1; # run time version check require 5.6.1; # ditto @@ -9327,7 +9346,9 @@ Note that these hooks are also permitted to set the %INC entry corresponding to the files they have loaded. See L<perlvar/%INC>. -(TBT) +これらのフックは、読み込まれるファイルに対応する %INC エントリを +セットすることも許可することに注意してください。 +L<perlvar/%INC> を参照してください。 =begin original @@ -10027,6 +10048,14 @@ =end original +Note the I<characters>: depending on the status of the socket, either +(8-bit) bytes or characters are sent. By default all sockets operate +on bytes, but for example if the socket has been changed using +binmode() to operate with the C<:utf8> I/O layer (see L</open>, or the +C<open> pragma, L<open>), the I/O will operate on UTF-8 encoded +Unicode characters, not bytes. Similarly for the C<:encoding> pragma: +in that case pretty much any characters can be sent. +(TBT) =item setpgrp PID,PGRP @@ -10511,20 +10540,21 @@ =end original -Perl 5.6 and earlier used a quicksort algorithm to implement sort. -That algorithm was not stable, and I<could> go quadratic. (A I<stable> sort -preserves the input order of elements that compare equal. Although -quicksort's run time is O(NlogN) when averaged over all arrays of -length N, the time can be O(N**2), I<quadratic> behavior, for some -inputs.) In 5.7, the quicksort implementation was replaced with -a stable mergesort algorithm whose worst case behavior is O(NlogN). -But benchmarks indicated that for some inputs, on some platforms, -the original quicksort was faster. 5.8 has a sort pragma for -limited control of the sort. Its rather blunt control of the -underlying algorithm may not persist into future perls, but the -ability to characterize the input or output in implementation -independent ways quite probably will. See L<sort>. -(TBT) +Perl 5.6 以前ではソートの実装にクイックソートアルゴリズムを使っていました。 +このアルゴリズムは安定せず、2 乗の時間が掛かる I<可能性があります> 。 +(I<安定した> ソートは、比較した時に同じ要素の入力順が保存されます。 +クイックソートの実行時間は、長さ N の全ての配列の平均では +O(NlogN) ですが、入力によっては O(N**2) という I<2 乗の> 振る舞いを +することがあります。) +5.7 では、クイックソートによる実装は、最悪の場合の振る舞いも +O(NlogN) である、安定したマージソートアルゴリズムに置き換えられました。 +しかし、入力とプラットフォームによっては、ベンチマークはクイックソートの +方が速くなります。 +5.8 ではソートを限定的に制御できる sort プラグマがあります。 +この、アルゴリズムの直接的な制御方法は将来の perl では引き継がれないかも +しれませんが、実装に依存しない形で入力や出力を性格付ける機能は +おそらくあります。 +L<sort> を参照してください。 =begin original @@ -11010,9 +11040,8 @@ =end original -As with regular pattern matching, any capturing parentheses that are not -matched in a C<split()> will be set to C<undef> when returned: -(TBT) +通常のパターンマッチングで、C<split()> でマッチしない全てのかっこは +返される時には C<undef> がセットされます。 @fields = split /(A)|B/, "1A2B3"; # @fields is (1, 'A', 2, undef, 3) @@ -11154,10 +11183,9 @@ =end original -Between the C<%> and the format letter, you may specify a number of -additional attributes controlling the interpretation of the format. -In order, these are: -(TBT) +C<%> とフォーマット文字の間に、フォーマットの解釈を制御するための、 +任意の数の追加の属性を指定できます。 +順番に、以下のものがあります: =over 4 @@ -11171,6 +11199,10 @@ =end original +An explicit format parameter index, such as C<2$>. By default sprintf +will format the next unused argument in the list, but this allows you +to take the arguments out of order. Eg: +(TBT) printf '%2$d %1$d', 12, 34; # prints "34 12" printf '%3$d %d %1$d', 1, 2, 3; # prints "3 1 1" @@ -11180,6 +11212,11 @@ =begin original one or more of: + +=end original + +以下のうちの一つまたは複数指定できます: + space prefix positive number with a space + prefix positive number with a plus sign - left-justify within the field @@ -11193,6 +11230,7 @@ =end original +例: printf '<% d>', 12; # prints "< 12>" printf '<%+d>', 12; # prints "<+12>" @@ -11213,6 +11251,12 @@ =end original +The vector flag C<v>, optionally specifying the join string to use. +This flag tells perl to interpret the supplied string as a vector +of integers, one for each character in the string, separated by +a given string (a dot C<.> by default). +これは任意の文字列の文字を順序付きの値として表示するのに +便利です: printf "version is v%vd\n", $^V; # Perl's version @@ -11223,6 +11267,9 @@ =end original +Put an asterisk C<*> before the C<v> to override the string to +use to separate the numbers: +(TBT) printf "address is %*vX\n", ":", $addr; # IPv6 address printf "bits are %0*v8b\n", " ", $bits; # random bitstring @@ -11234,6 +11281,9 @@ =end original +You can also explicitly specify the argument number to use for +the join string using eg C<*2$v>: +(TBT) printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":"; # 3 IPv6 addresses @@ -11248,6 +11298,11 @@ =end original +Arguments are usually formatted to be only as wide as required to +display the given value. You can override the width by putting +a number here, or get the width from the next argument (with C<*>) +or from a specified argument (with eg C<*2$>): +(TBT) printf '<%s>', "a"; # prints "<a>" printf '<%6s>', "a"; # prints "< a>" @@ -11276,6 +11331,11 @@ =end original +C<.> の後に数値を指定することで、(数値変換の場合)精度や(文字列変換の場合) +最大幅を指定できます。 +小数点数フォーマットの場合、'g' と 'G' を除いて、表示する小数点以下の +桁数を指定します(デフォルトは 6 です)。 +例: # these examples are subject to system-specific variation printf '<%f>', 1; # prints "<1.000000>" @@ -11291,6 +11351,9 @@ =end original +'g' と 'G' の場合、これは表示する数値の数を指定します; +これには小数点の前の数値と後の数値を含みます。 +例: # these examples are subject to system-specific variation printf '<%g>', 1; # prints "<1>" @@ -11308,6 +11371,8 @@ =end original +整数変換の場合、精度を指定すると、数値自体の出力はこの幅に 0 で +パッディングするべきであることを暗に示すことになります: printf '<%.6x>', 1; # prints "<000001>" printf '<%#.6x>', 1; # prints "<0x000001>" @@ -11320,6 +11385,8 @@ =end original +文字列変換の場合、精度を指定すると、指定された幅に収まるように文字列を +切り詰めます: printf '<%.5s>', "truncated"; # prints "<trunc>" printf '<%10.5s>', "truncated"; # prints "< trunc>" @@ -11330,6 +11397,7 @@ =end original +C<.*> を使って精度を次の引数から取ることも出来ます: printf '<%.6x>', 1; # prints "<000001>" printf '<%.*x>', 6, 1; # prints "<000001>" @@ -11342,6 +11410,10 @@ =end original +You cannot currently get the precision from a specified number, +but it is intended that this will be possible in the future using +eg C<.*2$>: +(TBT) printf '<%.*2$x>', 1, 6; # INVALID, but in future will print "<000001>" @@ -11358,6 +11430,13 @@ =end original +For numeric conversions, you can specify the size to interpret the +number as using C<l>, C<h>, C<V>, C<q>, C<L>, or C<ll>. For integer +conversions (C<d u o x X b i D U O>), numbers are usually assumed to be +whatever the default integer size is on your platform (usually 32 or 64 +bits), but you can override this to use instead one of the standard C types, +as supported by the compiler used to build Perl: +(TBT) l interpret integer as C type "long" or "unsigned long" h interpret integer as C type "short" or "unsigned short" @@ -11373,6 +11452,12 @@ =end original +The last will produce errors if Perl does not understand "quads" in your +installation. (This requires that either the platform natively supports quads +or Perl was specifically compiled to support quads.) +Perl が 64 ビット整数に対応しているかどうかは L<Config> を使って +調べられます: +(TBT) use Config; ($Config{use64bitint} eq 'define' || $Config{longsize} >= 8) && @@ -11397,7 +11482,6 @@ use Config; $Config{d_longdbl} eq 'define' && print "long doubles\n"; - =begin original You can find out whether Perl considers 'long double' to be the default @@ -11405,6 +11489,9 @@ =end original +You can find out whether Perl considers 'long double' to be the default +floating point size to use on your platform via L<Config>: +(TBT) use Config; ($Config{uselongdouble} eq 'define') && @@ -11416,6 +11503,8 @@ =end original +It can also be the case that long doubles and doubles are the same thing: +(TBT) use Config; ($Config{doublesize} == $Config{longdblsize}) && @@ -11430,6 +11519,11 @@ =end original +The size specifier C<V> has no effect for Perl code, but it is supported +for compatibility with XS code; it means 'use the standard size for +a Perl integer (or floating-point number)', which is already the +default for Perl code. +(TBT) =item order of arguments @@ -11446,6 +11540,15 @@ =end original +Normally, sprintf takes the next unused argument as the value to +format for each format specification. If the format specification +uses C<*> to require additional arguments, these are consumed from +the argument list in the order in which they appear in the format +specification I<before> the value to format. Where an argument is +specified using an explicit index, this does not affect the normal +order for the arguments (even when the explicitly specified index +would have been the next argument in any case). +(TBT) =begin original @@ -11453,6 +11556,7 @@ =end original +それで: printf '<%*.*s>', $a, $b, $c; @@ -11463,6 +11567,8 @@ =end original +とすると C<$a> を幅に、C<$b> を精度に、C<$c> をフォーマットの値に +使いますが、一方: print '<%*1$.*s>', $a, $b; @@ -11473,6 +11579,7 @@ =end original +とすると C<$a> を幅と精度に、C<$b> をフォーマットの値に使います。 =begin original @@ -11481,6 +11588,8 @@ =end original +以下にさらなる例を示します - 明示的にインデックスを使う場合、C<$> は +エスケープする必要があることに注意してください。 printf "%2\$d %d\n", 12, 34; # will print "34 12\n" printf "%2\$d %d %d\n", 12, 34; # will print "34 12 34\n" @@ -11584,11 +11693,10 @@ =end original -You can call srand($seed) with the same $seed to reproduce the -I<same> sequence from rand(), but this is usually reserved for -generating predictable results for testing or debugging. -Otherwise, don't call srand() more than once in your program. -(TBT) +同じ $seed を使って srand($seed) を呼び出すことで、rand() から I<同じ> +乱数列を再現できますが、これは普通テストやデバッグのために予測された +結果を生成するために使われます。 +それ以外では、srand() をプログラム内で 2 回以上呼び出さないでください。 =begin original @@ -12549,11 +12657,10 @@ =end original -Note the I<in bytes>: even if the filehandle has been set to operate -on characters (for example by using the C<:utf8> I/O layer), tell() -will return byte offsets, not character offsets (because implementing -that would render sysseek() very slow). -(TBT) +I<バイト単位> の注意: 文字単位で扱うようにファイルハンドルが +設定されている場合(C<:utf8> I/O 層を使っている場合など)でも、 +tell() は文字のオフセットではなくバイトのオフセットを返します +(sysseek() の実装がとても遅いからです)。 =begin original @@ -13651,11 +13758,10 @@ =end original -Specifying VERSION as a literal of the form v5.6.1 should generally be -avoided, because it leads to misleading error messages under earlier -versions of Perl which do not support this syntax. The equivalent numeric -version should be used instead. -(TBT) +VERSION に v5.6.1 の形のリテラルを指定することは一般的には避けるべきです; +なぜなら、この文法に対応していない Perl の初期のバージョンでは +誤解させるようなエラーメッセージが出るからです。 +代わりに等価な数値表現を使うべきです。 use v5.6.1; # compile time version check use 5.6.1; # ditto @@ -13849,12 +13955,10 @@ =end original -Since perl 5.7.2, if the first two elements of the list are C<undef>, then -the utime(2) function in the C library will be called with a null second -argument. On most systems, this will set the file's access and -modification times to the current time (i.e. equivalent to the example -above.) -(TBT) +perl 5.7.2 から、リストの最初の二つの要素が C<undef> である場合、 +C ライブラリの utime(2) 関数を、秒の引数を null として呼び出します。 +ほとんどのシステムでは、これによってファイルのアクセス時刻と修正時刻を +現在の時刻にセットします(つまり、上記の例と等価です)。 utime undef, undef, @ARGV; @@ -13868,12 +13972,12 @@ =end original -Under NFS this will use the time of the NFS server, not the time of -the local machine. If there is a time synchronization problem, the -NFS server and local machine will have different times. The Unix -touch(1) command will in fact normally use this form instead of the -one shown in the first example. -(TBT) +NFS では、これはローカルマシンの時刻ではなく、NFS サーバーの時刻が +使われます。 +時刻同期に問題がある場合、NFS サーバーとローカルマシンで違う時刻に +なっている場合があります。 +実際のところ、Unix の touch(1) コマンドは普通、最初の例ではなく、 +この形を使います。 =begin original @@ -13884,11 +13988,10 @@ =end original -Note that only passing one of the first two elements as C<undef> will -be equivalent of passing it as 0 and will not have the same effect as -described when they are both C<undef>. This case will also trigger an -uninitialized warning. -(TBT) +最初の二つの要素のうち、一つだけに C<undef> を渡すと、その要素は 0 を +渡すのと等価となり、上述の、両方に C<undef> を渡した時と同じ +効果ではないことに注意してください。 +この場合は、未初期化の警告が出ます。 =item values HASH