Kentaro Shirakata
argra****@users*****
2007年 8月 11日 (土) 23:20:11 JST
Index: docs/perl/5.8.4/perlfunc.pod diff -u docs/perl/5.8.4/perlfunc.pod:1.3 docs/perl/5.8.4/perlfunc.pod:1.4 --- docs/perl/5.8.4/perlfunc.pod:1.3 Sat Aug 4 02:54:51 2007 +++ docs/perl/5.8.4/perlfunc.pod Sat Aug 11 23:20:11 2007 @@ -977,6 +977,10 @@ =end original +LAYER が存在すると、それは単一の文字列ですが、複数の指示子を +含むことができます。 +指示子はファイルハンドルの振る舞いを変更します。 +LAYER が存在すると、テキストファイルでの binmode が意味を持ちます。 =begin original @@ -991,6 +995,14 @@ =end original +LAYER が省略されたり、C<:raw> が指定されると、ファイルハンドルはバイナリ +データの通過に適するように設定されます。 +これには CRLF 変換をオフにしたり、それぞれを(Unicode 文字ではなく) +バイトであるとマークしたりすることを含みます。 +I<"プログラミング Perl">(ラクダ本) やその他で暗示されているにも関わらず、 +C<:raw> は単なる C<:crlf> の I<逆ではありません> -- ストリームの +バイナリとしての性質に影響を与える I<その他の層も無効にされます>。 +L<PerlIO>, L<perlrun> およびPERLIO 環境変数に関する議論を参照してください。 =begin original @@ -1000,6 +1012,10 @@ =end original +C<:bytes>, C<:crlf>, and C<:utf8>, 及びその他の C<:...> 形式の指示子は +I/O I<層> が呼び出されます。 +C<open> プラグマはデフォルト I/O 層を指定するために使われます。 +L<open> を参照してください。 =begin original @@ -1012,6 +1028,12 @@ =end original +I<binmode() 関数の LAYER パラメータは 「プログラミングPerl 第3版」では +「ディシプリン(DISCIPLINE)」と表現されていました。 +しかし、「ラクダ本第3版」として知られているこの本の出版後、この機能の名前は +「ディシプリン」から「層」に変更することで合意されました。 +従って、このバージョンの Perl の全ての文書では「ディシプリン」ではなく +「層」と記述されています。では通常の解説に戻ります…。> =begin original @@ -1019,6 +1041,8 @@ =end original +FILEHANDLE が UTF-8 であるというマークをつけるには、C<:utf8> を +使ってください。 =begin original @@ -1034,6 +1058,17 @@ =end original +一般的に binmode() は open() を呼び出した後、このファイルハンドルに対する +I/O 操作をする前に呼び出すべきです。 +binmode() を呼び出すと、普通はこのファイルハンドルに対して +バッファリングされている全ての出力データ +(およびおそらくは入力データ)をフラッシュします。 +例外は、このハンドルに対するデフォルト文字エンコーディングを変更する +C<:encoding> 層です; L<open> を参照してください。 +C<:encoding> 層はストリームの途中で呼び出す必要があることがあり、 +それによってストリームはフラッシュされません。 +Perl は内部で UTF-8 エンコードされた Unicode 文字を操作しているので、 +C<:encoding> は暗黙のうちに自身を C<:utf8> 層の上に押し上げます。 =begin original @@ -1592,6 +1627,8 @@ =end original +C<bytes> プラグマが指定されていると NUMBER は下位 8 ビットに +マスクされることに注意してください。 =begin original @@ -6232,12 +6269,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) +3 以上の引数が指定された場合、開く時のモードとファイル名は分離されます。 +MODE が C<< '<' >> か空の場合、ファイルは入力用に開かれます。 +MODE が C<< '>' >> の場合、ファイルは切り詰められて出力用に開かれ、 +必要なら作成されます。 +MODE が C<<< '>>' >>> の場合、ファイルは追加用に開かれ、やはり必要なら +作成されます。 =begin original @@ -6252,15 +6289,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) +ファイルに読み込みアクセスと書き込みアクセスの両方をしたいことを示すために、 +C<< '>' >> や C<< '<' >> の前に C<'+'> を付けることができます: +従って、C<< '+<' >> ほとんど常に 読み書き更新のために使われます -- +C<< '+>' >> モードはまずファイルを上書きします。 +普通はこれらの読み書きモードをテキストファイルの更新のためには使えません; +なぜなら可変長のレコードで構成されているからです。 +よりよい手法については L<perlrun> の B<-i> オプションを参照してください。 +ファイルは C<0666> をプロセスの C<umask> 値で修正したパーミッションで +作成されます。 =begin original @@ -6348,13 +6385,11 @@ =end original -In the three-or-more argument form of pipe opens, if LIST is specified -(extra arguments after the command name) then LIST becomes arguments -to the command invoked if the platform supports it. The meaning of -C<open> with more than three arguments for non-pipe modes is not yet -specified. Experimental "layers" may give extra LIST arguments -meaning. -(TBT) +パイプでの 3 つ以上の引数の形式では、LIST (コマンド名の後の追加の引数) が +指定されると、プラットフォームが対応していれば、LIST は起動される +コマンドへの引数となります。 +パイプモードではない C<open> での 3 つ以上の引数の意味はまだ未定義です。 +実験的な「層」は追加の LIST 引数の意味を与えます。 =begin original @@ -6375,11 +6410,10 @@ =end original -You may use the three-argument form of open to specify IO "layers" -(sometimes also referred to as "disciplines") to be applied to the handle -that affect how the input and output are processed (see L<open> and -L<PerlIO> for more details). For example -(TBT) +open の 3 引数形式では、どのように入出力が処理されるかに影響を与える +IO 「層」(「ディシプリン」とも呼ばれます)を指定できます +(詳細については L<open> と L<PerlIO> を参照してください)。 +例えば: open(FH, "<:utf8", "file") @@ -6673,14 +6707,13 @@ =end original -Being parsimonious on filehandles is also useful (besides being -parsimonious) for example when something is dependent on file -descriptors, like for example locking using flock(). If you do just -C<< open(A, '>>&B') >>, the filehandle A will not have the same file -descriptor as B, and therefore flock(A) will not flock(B), and vice -versa. But with C<< open(A, '>>&=B') >> the filehandles will share -the same file descriptor. -(TBT) +ファイルハンドルを倹約することは、何かがファイル記述子に依存している場合、 +例えば flock() を使ったファイルロックといった場合に有用です +(しかも倹約できます)。 +C<< open(A, '>>&B') >> とすると、ファイルハンドル A は B と同じ +ファイル記述子にはならないので、flock(A) と flock(B) は別々になります。 +しかし C<< open(A, '>>&=B') >> ではファイルハンドルは同じファイル記述子を +共有します。 =begin original @@ -7123,12 +7156,12 @@ =end original -The only currently recognized C<our()> attribute is C<unique> which -indicates that a single copy of the global is to be used by all -interpreters should the program happen to be running in a -multi-interpreter environment. (The default behaviour would be for -each interpreter to have its own copy of the global.) Examples: -(TBT) +現在のところ C<our()> が認識する唯一の属性は C<unique> で、 +これはプログラムがマルチインタプリタ環境で動作する時に +全てのインタプリタで一つだけどグローバル変数を使うことを示します。 +(デフォルトの振る舞いは、各インタプリタがそれぞれ自身のグローバル変数を +持ちます。) +例: our @EXPORT : unique = qw(foo); our %EXPORT_TAGS : unique = (bar => [qw(aa bb cc)]); @@ -7142,10 +7175,9 @@ =end original -Note that this attribute also has the effect of making the global -readonly when the first new interpreter is cloned (for example, -when the first new thread is created). -(TBT) +この属性はまた、最初の新しいインタプリタが複製された時(例えば、最初の +新しいスレッドが作成された時)にグローバル変数を読み込み専用にする +効果もあることに注意してください。 =begin original @@ -7456,14 +7488,14 @@ =end original -One can replace the numeric repeat count by a template enclosed in brackets; -then the packed length of this template in bytes is used as a count. -For example, C<x[L]> skips a long (it skips the number of bytes in a long); -the template C<$t X[$t] $t> unpack()s twice what $t unpacks. -If the template in brackets contains alignment commands (such as C<x![d]>), -its packed length is calculated as if the start of the template has the maximal -possible alignment. -(TBT) +大かっこで囲まれたテンプレートで数値の繰り返し数を置き換えることができます; +このテンプレートでパックされたバイト長が繰り返し数として使われます。 +例えば、C<x[L]> は long をスキップします(long のバイト数だけスキップします); +テンプレート C<$t X[$t] $t> は $t を unpack したものの 2 倍を +unpack() します。 +(C<x![d]> のように) 大かっこにアライメントコマンドが含まれている場合、 +パックされた長さは、テンプレートの先頭で最大限可能なアライメントを +持っているものとして計算されます。 =begin original @@ -8010,11 +8042,11 @@ =end original -A ()-group is a sub-TEMPLATE enclosed in parentheses. A group may -take a repeat count, both as postfix, and for unpack() also via the C</> -template character. Within each repetition of a group, positioning with -C<@> starts again at 0. Therefore, the result of -(TBT) +() のグループはかっこで囲われた副テンプレートです。 +グループは繰り返し数を取ることができます; 接尾辞によるか、unpack() の場合は +C</> テンプレート文字によります。 +グループの繰り返し毎に、C<@> の位置は 0 になります。 +従って、以下の結果は: pack( '@1A((@2A)@3A)', 'a', 'b', 'c' ) @@ -8647,14 +8679,14 @@ =end original -Note the I<characters>: depending on the status of the filehandle, -either (8-bit) bytes or characters are read. By default all -filehandles operate on bytes, but for example if the filehandle has -been opened with the C<:utf8> I/O layer (see L</open>, and 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 read. -(TBT) +I<文字> に関する注意: ファイルハンドルの状態によって、(8 ビットの) バイトか +文字が読み込まれます。 +デフォルトでは全てのファイルハンドルはバイトを処理しますが、 +例えばファイルハンドルが C<:utf8> I/O 層(L</open>, C<open> プラグマ、 +L<open> を参照してください) で開かれた場合、I/O はバイトではなく、 +UTF-8 エンコードされた Unicode 文字を操作します。 +C<:encoding> プラグマも同様です: +この場合、ほとんど大体全ての文字が読み込めます。 =item readdir DIRHANDLE @@ -8850,14 +8882,14 @@ =end original -Note the I<characters>: depending on the status of the socket, either -(8-bit) bytes or characters are received. 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 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 read. -(TBT) +I<文字> に関する注意: ソケットの状態によって、(8 ビットの) バイトか +文字を受信します。 +デフォルトでは全てのソケットはバイトを処理しますが、 +例えばソケットが binmode() で C<:utf8> I/O 層(C<open> プラグマ、 +L<open> を参照してください) を使うように指定された場合、I/O はバイトではなく、 +UTF-8 エンコードされた Unicode 文字を操作します。 +C<:encoding> プラグマも同様です: +この場合、ほとんど大体全ての文字が読み込めます。 =item redo LABEL @@ -9215,15 +9247,15 @@ =end original -Now that you understand how C<require> looks for files in the case of -a bareword argument, there is a little extra functionality going on -behind the scenes. Before C<require> looks for a "F<.pm>" extension, -it will first look for a filename with a "F<.pmc>" extension. A file -with this extension is assumed to be Perl bytecode generated by -L<B::Bytecode|B::Bytecode>. If this file is found, and it's modification -time is newer than a coinciding "F<.pm>" non-compiled file, it will be -loaded in place of that non-compiled file ending in a "F<.pm>" extension. -(TBT) +引数が裸の単語の場合、C<require> がどのようにファイルを探すかを +理解してください; 水面下でちょっとした追加の機能があります。 +C<require> が拡張子 "F<.pm>" のファイルを探す前に、まず拡張子 "F<.pmc>" を +持つファイルを探します。 +この拡張子を持つファイルは L<B::Bytecode|B::Bytecode> で生成された Perl +バイトコードであると仮定します。 +このファイルが見つかって、このファイルの修正時刻が、対応するコンパイル +されていない拡張子 "F<.pm>" のファイルより新しい場合、このファイルが +拡張子 "F<.pm>" の代わりに読み込まれます。 =begin original @@ -9250,14 +9282,14 @@ =end original -Subroutine references are the simplest case. When the inclusion system -walks through @INC and encounters a subroutine, this subroutine gets -called with two parameters, the first being a reference to itself, and the -second the name of the file to be included (e.g. "F<Foo/Bar.pm>"). The -subroutine should return C<undef> or a filehandle, from which the file to -include will be read. If C<undef> is returned, C<require> will look at -the remaining elements of @INC. -(TBT) +サブルーチンへのリファレンスは一番単純な場合です。 +インクルード機能が @INC を走査してサブルーチンに出会った場合、この +サブルーチンは二つの引数と共に呼び出されます; +一つ目は自身へのリファレンス、二つ目はインクルードされるファイル名 +("F<Foo/Bar.pm>" など)です。 +サブルーチンは C<undef> か、インクルードするファイルが読み込まれる +ファイルハンドルを返します。 +C<undef> が返されると、C<require> は @INC の残りの要素を見ます。 =begin original @@ -9648,11 +9680,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> open -layer), tell() will return byte offsets, not character offsets -(because implementing that would render seek() and tell() rather slow). -(TBT) +I<バイト単位> に関する注意: ファイルハンドルが (例えば C<:utf8> 層を使って) +文字を操作するように設定されていたとしても、tell() は文字の +オフセットではなくバイトのオフセットを返すことに注意してください +(なぜならこれを実装すると seek() と tell() が遅くなってしまうからです)。 =begin original @@ -10039,14 +10070,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) +I<文字> に関する注意: ソケットの状態によって、(8 ビットの) バイトか +文字を送信します。 +デフォルトでは全てのソケットはバイトを処理しますが、 +例えばソケットが binmode() で C<:utf8> I/O 層(L</open>、C<open> プラグマ、 +L<open> を参照してください) を使うように指定された場合、I/O はバイトではなく、 +UTF-8 エンコードされた Unicode 文字を操作します。 +C<:encoding> プラグマも同様です: +この場合、ほとんど大体全ての文字が書き込めます。 =item setpgrp PID,PGRP @@ -10456,7 +10487,7 @@ 応じて、負、ゼロ、正の整数を返すサブルーチンの名前であると解釈されます。 (このようなルーチンには、C<< <=> >> 演算子や cmp 演算子が、 たいへん便利です。) -SUBNAME は、スカラ変数名(添え字なし)でもよく、 +SUBNAME は、スカラ変数名(添字なし)でもよく、 その場合には、その値が使用する実際のサブルーチンの 名前(またはそのリファレンス)と解釈されます。 SUBNAME の代わりに、無名のインライン @@ -11396,10 +11427,8 @@ =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) +現在のところ制度を指定した数値から得ることはできませんが、 +将来は C<.*2$> のようにして可能にしようとしています: printf '<%.*2$x>', 1, 6; # INVALID, but in future will print "<000001>" @@ -11416,19 +11445,27 @@ =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) +数値変換では、C<l>, C<h>, C<V>, C<q>, C<L>, C<ll> を使って解釈する数値の +大きさを指定できます。 +整数変換 (C<d u o x X b i D U O>) では、数値は通常プラットフォームの +デフォルトの整数のサイズ (通常は 32 ビットか 64 ビット) を仮定しますが、 +これを Perl がビルドされたコンパイラが対応している標準 C の型の一つで +上書きできます: + +=begin original l interpret integer as C type "long" or "unsigned long" h interpret integer as C type "short" or "unsigned short" q, L or ll interpret integer as C type "long long", "unsigned long long". or "quads" (typically 64-bit integers) +=end original + + l 整数を C の "long" または "unsigned long" と解釈する + h 整数を C の "short" または "unsigned short" と解釈する + q, L or ll 整数を C の "long long", "unsigned long long", + "quads"(典型的には 64 ビット整数) のどれかと解釈する + =begin original The last will produce errors if Perl does not understand "quads" in your @@ -11438,12 +11475,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 ビット整数を理解しない場合はエラーになります。 +(このためにはプラットフォームがネイティブに 64 ビット整数に対応しているか、 +Perl が特に 64 ビット整数に対応するようにコンパイルされている +必要があります。) Perl が 64 ビット整数に対応しているかどうかは L<Config> を使って 調べられます: -(TBT) use Config; ($Config{use64bitint} eq 'define' || $Config{longsize} >= 8) && @@ -11475,9 +11512,8 @@ =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) +Perl が 'long double' をデフォルトの浮動小数点数として扱っているかどうかは +L<Config> を使って調べられます: use Config; ($Config{uselongdouble} eq 'define') && @@ -11504,11 +11540,10 @@ =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) +サイズ指定子 C<V> は Perl のコードには何の影響もありませんが、これは +XS コードとの互換性のために対応しています; これは「Perl 整数 (または +浮動小数点数) として標準的なサイズを使う」ことを意味し、これは Perl の +コードでは既にデフォルトです。 =item order of arguments @@ -11525,15 +11560,14 @@ =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) +通常、sprintf は各フォーマット指定について、使われていない次の引数を +フォーマットする値として使います。 +追加の引数を要求するためにフォーマット指定 C<*> を使うと、 +これらはフォーマットする値の I<前> のフォーマット指定に現れる順番に +引数リストから消費されます。 +引数の位置が明示的なインデックスを使って指定された場合、 +(明示的に指定したインデックスが次の引数の場合でも) +これは通常の引数の順番に影響を与えません。 =begin original @@ -11662,12 +11696,10 @@ =end original -Most programs won't even call srand() at all, except those that -need a cryptographically-strong starting point rather than the -generally acceptable default, which is based on time of day, -process ID, and memory allocation, or the F</dev/urandom> device, -if available. -(TBT) +ほとんどのプログラムはそもそも srand() を呼ぶ必要すらありません; +例外は、時刻、プロセス ID、メモリ配置、(利用可能なら) F</dev/urandom> +デバイスといった、一般的に受け入れられるデフォルトよりも暗号学的に +強力な開始点が必要な場合です。 =begin original @@ -11846,7 +11878,7 @@ 7 size ファイルサイズ(バイト単位) 8 atime 紀元から、最後にアクセスされた時刻までの秒数 9 mtime 紀元から、最後に修正(modify)された時刻までの秒数 - 10 ctime 紀元から、inode 変更(change)された時刻(作成された時刻ではない!)までの秒数 + 10 ctime 紀元から、inode 変更(change)された時刻までの秒数 (*) 11 blksize ファイルシステム I/O に適したブロックサイズ 12 blocks 実際に割り当てられているブロックの数 @@ -12123,8 +12155,7 @@ 実行時まで、探そうとする文字列がわからないときには、 ループ全体を文字列として組み立てて、C<eval> すれば、 -いつも、すべてのパターンを再コンパイルするという事態は -避けられます。 +いつも、すべてのパターンを再コンパイルするという事態は避けられます。 ファイル全体を一つのレコードとして入力するために、 C<$/> を未定義にすれば、かなり速くなり、 多くの場合 fgrep(1) のような専用のプログラムより速くなります。 @@ -12273,16 +12304,14 @@ =end original -If the lvalue returned by substr is used after the EXPR is changed in -any way, the behaviour may not be as expected and is subject to change. -This caveat includes code such as C<print(substr($foo,$a,$b)=$bar)> or -C<(substr($foo,$a,$b)=$bar)=$fud> (where $foo is changed via the -substring assignment, and then the substr is used again), or where a -substr() is aliased via a C<foreach> loop or passed as a parameter or -a reference to it is taken and then the alias, parameter, or deref'd -reference either is used after the original EXPR has been changed or -is assigned to and then used a second time. -(TBT) +substr によって返された左辺値が何らかの形で EXPR が変更された後に +使われると、振る舞いは予想外になることがあり、これは変更される予定です。 +この欠陥には、C<print(substr($foo,$a,$b)=$bar)> や +C<(substr($foo,$a,$b)=$bar)=$fud> (ここで $foo は substr による代入で +変更され、それから substr が再び使われます) といったコード、あるいは、 +substr() が C<foreach> ループによるエイリアス、引数渡し、リファレンス化が +行われ、その後 EXPR が変更されたり、代入された後にそのエイリアス、引数、 +デリファレンスされたリファレンスが使われるような場合を含みます。 =item symlink OLDFILE,NEWFILE @@ -12605,12 +12634,11 @@ =end original -Note that if the filehandle has been marked as C<:utf8> Unicode -characters are read instead of bytes (the LENGTH, OFFSET, and the -return value of sysread() are in Unicode characters). -The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer. -See L</binmode>, L</open>, and the C<open> pragma, L<open>. -(TBT) +ファイルハンドルが C<:utf8> であるとマークが付けられると、バイトではなく +Unicode 文字が読み込まれます (sysread() の LENGTH, OFFSET および返り値は +Unicode 文字になります)。 +C<:encoding(...)> 層は暗黙のうちに C<:utf8> 層が導入されます。 +L</binmode>, L</open>, C<open> プラグマ, L<open> を参照してください。 =item sysseek FILEHANDLE,POSITION,WHENCE @@ -12642,10 +12670,10 @@ =end original -I<バイト単位> の注意: 文字単位で扱うようにファイルハンドルが +I<バイト単位> に関する注意: 文字単位で扱うようにファイルハンドルが 設定されている場合(C<:utf8> I/O 層を使っている場合など)でも、 tell() は文字のオフセットではなくバイトのオフセットを返します -(sysseek() の実装がとても遅いからです)。 +(なぜならこれを実装すると sysseek() がとても遅くなるからです)。 =begin original @@ -12896,12 +12924,11 @@ =end original -Note that if the filehandle has been marked as C<:utf8>, Unicode -characters are written instead of bytes (the LENGTH, OFFSET, and the -return value of syswrite() are in UTF-8 encoded Unicode characters). -The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer. -See L</binmode>, L</open>, and the C<open> pragma, L<open>. -(TBT) +ファイルハンドルが C<:utf8> であるとマークが付けられると、バイトではなく +Unicode 文字が読み込まれます (syswrite() の LENGTH, OFFSET および返り値は +Unicode 文字になります)。 +C<:encoding(...)> 層は暗黙のうちに C<:utf8> 層が導入されます。 +L</binmode>, L</open>, C<open> プラグマ, L<open> を参照してください。 =item tell FILEHANDLE @@ -12931,11 +12958,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> open -layer), tell() will return byte offsets, not character offsets -(because that would render seek() and tell() rather slow). -(TBT) +I<バイト単位> に関する注意: ファイルハンドルが (例えば C<:utf8> 層を使って) +文字を操作するように設定されていたとしても、tell() は文字の +オフセットではなくバイトのオフセットを返すことに注意してください +(なぜならこれは seek() と tell() が遅くなってしまうからです)。 =begin original