argra****@users*****
argra****@users*****
2011年 5月 29日 (日) 00:27:33 JST
Index: docs/perl/5.10.0/perlopentut.pod diff -u docs/perl/5.10.0/perlopentut.pod:1.11 docs/perl/5.10.0/perlopentut.pod:1.12 --- docs/perl/5.10.0/perlopentut.pod:1.11 Sun May 22 06:13:24 2011 +++ docs/perl/5.10.0/perlopentut.pod Sun May 29 00:27:33 2011 @@ -23,7 +23,7 @@ =end original Perl には、ファイルを開くための 2 つの単純な組み込みの手段があります: -便利さのためのシェル風の方法と、正確性のための C 風の方法です。 +利便性のためのシェル風の方法と、正確性のための C 風の方法です。 シェル風の方法には 2 引数と 3 引数があり、ファイル名の扱いに関して 異なった動作をします。 選択はあなた次第です。 @@ -843,7 +843,7 @@ これは、前述した単純な C<open> をエミュレートするために C<sysopen> を 使う方法です。 -明確化のために C<|| die $!> のチェックは省略しましたが、実際の尾k-どで派 +明確化のために C<|| die $!> のチェックは省略しましたが、実際のコードでは 常に返り値をチェックするようにしてください。 C<open> は前後の空白を削除するのでこれは全く同じというわけではありませんが、 想像はできるでしょう。 @@ -1098,11 +1098,11 @@ =end original -If you have one of those tricky, newfangled I/O objects that the C++ -folks are raving about, then this doesn't work because those aren't a -proper filehandle in the native Perl sense. You'll have to use fileno() -to pull out the proper descriptor number, assuming you can: -(TBT) +もし、C++ 民が夢中になっているような巧妙で目新しい I/O オブジェクトの一つを +使っているなら、これらはネイティブな Perl 的に適切なファイルハンドルでは +ないので、上述のような方法は動作しません。 +適切な記述子番号を得るために fileno() を使う必要があります; それが出来ると +仮定すれば: use IO::Socket; $handle = IO::Socket::INET->new("www.perl.com:80"); @@ -1136,14 +1136,14 @@ =end original -If the filehandle or descriptor number is preceded not just with a simple -"&" but rather with a "&=" combination, then Perl will not create a -completely new descriptor opened to the same place using the dup(2) -system call. Instead, it will just make something of an alias to the -existing one using the fdopen(3S) library call. This is slightly more -parsimonious of systems resources, although this is less a concern -these days. Here's an example of that: -(TBT) +もしファイルハンドルや記述子番号の前にあるのが単なる "&" ではなく "&=" の +組み合わせの場合、Perl は dup(2) システムコールを使って同じ場所で開いた +完全に新しい記述子は作りません。 +代わりに、fdopen(3S) ライブラリコールを使ってすでにある記述子の別名的な +ものを作ります。 +これはシステムのリソースを少しケチることが出来ますが、最近ではこれは +あまり関心を持たれなくなりました。 +以下はこの例です: $fd = $ENV{"MHCONTEXTFD"}; open(MHCONTEXT, "<&=$fd") or die "couldn't fdopen $fd: $!"; @@ -1156,10 +1156,9 @@ =end original -もしマジカルな C<< <ARGV> >> を使っているなら、you could even pass in as a -command line argument in @ARGV something like C<"<&=$MHCONTEXTFD">, -but we've never seen anyone actually do this. -(TBT) +もしマジカルな C<< <ARGV> >> を使っているなら、C<"<&=$MHCONTEXTFD"> の +ような感じで @ARGV 内のコマンドライン引数として渡すことすら可能ですが、 +実際にこれをしている人を見たことはありません。 =head2 Dispelling the Dweomer @@ -1179,10 +1178,9 @@ DWIM とは "do what I mean" の略です。 しかし、この原則は時々利用者が知っている以上の隠れた動作をすることが あります。 -In this way, Perl -is also filled with I<dweomer>, an obscure word meaning an enchantment. -Sometimes, Perl's DWIMmer is just too much like dweomer for comfort. -(TBT) +こんな風に、Perl は (魔法を意味する不明確な単語である) I<dweomer> にも +満ちています。 +時々、Perl の空気の読み方は快適さのために魔法のようになります。 =begin original @@ -1352,10 +1350,8 @@ =end original どうしてこれはここなんでしょう? -Someone has to cater to the hysterical porpoises. -It's something that's been in Perl since the very beginning, if not -before. -(TBT) +誰かがヒステリックなネズミイルカの要求を満たす必要があります。 +これは(遅くとも)非常に初期から Perl にあります。 =head2 Playing with STDIN and STDOUT @@ -1495,7 +1491,7 @@ =end original ファイルがファイルでないときは? -えっと、プレーンファイルでないものの時、と言いたいんですよね。 +えっと、プレーンファイルでないもののとき、と言いたいんですよね。 まず、念のために、それがシンボリックリンクかどうかを調べます。 if (-l $file || ! -f _) { @@ -1671,17 +1667,15 @@ =end original -Rather than losing yourself in a morass of twisting, turning C<ioctl>s, -all dissimilar, if you're going to manipulate ttys, it's best to -make calls out to the stty(1) program if you have it, or else use the -portable POSIX interface. +もし tty を操作しようとしているなら、全く異なる C<ioctl> の泥沼に +迷い込むのではなく、もし stty(1) プログラムがあるならこれを呼び出して、 +さもなければ移植性のある POSIX インターフェースを使うのが最善です。 これらのこと全てを理解するには、まず tty デバイスへの POSIX インターフェースについて記述している termios(3) man ページを読んで、次に POSIX への Perl のインターフェースについて記述している L<POSIX> を 読む必要があります。 これらのものを扱う助けになるような高レベルモジュールも CPAN にあります。 Term::ReadKey と Term::ReadLine を調べてください。 -(TBT) =head2 Opening Sockets @@ -1739,15 +1733,15 @@ =end original -On certain legacy systems with what could charitably be called terminally -convoluted (some would say broken) I/O models, a file isn't a file--at -least, not with respect to the C standard I/O library. On these old -systems whose libraries (but not kernels) distinguish between text and -binary streams, to get files to behave properly you'll have to bend over -backwards to avoid nasty problems. On such infelicitous systems, sockets -and pipes are already opened in binary mode, and there is currently no -way to turn that off. With files, you have more options. -(TBT) +最終的に (壊れていると言われる) I/O モデルに巻き込まれると寛大にも +呼ばれるある種の古いシステムでは、ファイルはファイルではありません -- +少なくとも C 標準 I/O ライブラリという観点では。 +(カーネルではなく)ライブラリがテキストストリームとバイナリストリームを +区別するような古いシステムでは、適切に振る舞うようにファイルを +取得するためには、不愉快な問題を避けるために懸命な努力が必要です。 +このような不幸なシステムでは、ソケットとパイプは既にバイナリモードで +開いていて、今のところこれをオフにする方法はありません。 +ファイルに対しては、もっと選択肢があります。 =begin original