argra****@users*****
argra****@users*****
2008年 6月 13日 (金) 03:34:57 JST
Index: docs/perl/5.10.0/perlfaq5.pod diff -u docs/perl/5.10.0/perlfaq5.pod:1.5 docs/perl/5.10.0/perlfaq5.pod:1.6 --- docs/perl/5.10.0/perlfaq5.pod:1.5 Thu Jun 12 04:36:31 2008 +++ docs/perl/5.10.0/perlfaq5.pod Fri Jun 13 03:34:57 2008 @@ -1010,8 +1010,8 @@ =end original これを行うための組み込みの方法はありません。 -しかしL<perlfrom>には、これを可能にするためのニ、三の intrepid hacker向けの -テクニックがあります。 +しかしL<perlform>にはこれを可能にするための、大胆不敵なハッカー向けの +いくつかのテクニックがあります。 =head2 How can I write() into a string? X<write, into a string> Index: docs/perl/5.10.0/perlfaq6.pod diff -u docs/perl/5.10.0/perlfaq6.pod:1.4 docs/perl/5.10.0/perlfaq6.pod:1.5 --- docs/perl/5.10.0/perlfaq6.pod:1.4 Thu Jun 12 04:36:31 2008 +++ docs/perl/5.10.0/perlfaq6.pod Fri Jun 13 03:34:57 2008 @@ -1,3 +1,6 @@ + +=encoding euc-jp + =head1 NAME =begin original @@ -27,9 +30,10 @@ 正規表現を伴った回答と一緒にあちこちに散在しているからです。 たとえばURLをデコードするとかあるものが数値かどうか確認することは 正規表現を使って処理されますが、この回答はこの資料のあらゆる所で -見つけることができます(正確には L<perlfaq9>: "How do I decode or create those %-encodings -+on the web" と L<perfaq4>: "How do I determine whether a scalar is -+a number/whole/integer/float")。 +見つけることができます(正確には L<perlfaq9>: +"How do I decode or create those %-encodings on the web" と +L<perfaq4>: "How do I determine whether a scalar is +a number/whole/integer/float")。 =head2 How can I hope to use regular expressions without creating illegible and unmaintainable code? X<regex, legibility> X<regexp, legibility> @@ -139,15 +143,13 @@ =end original -私たちは通常、C</>で区切られたものをパターンであると考えています -が、パターンはほとんどすべてのキャラクタを使って区切ることが可能 -です。 +私たちは通常、C</>で区切られたものをパターンであると考えていますが、 +パターンはほとんどすべてのキャラクタを使って区切ることが可能です。 L<perlre>はこれを説明しています。 たとえば、先に挙げたC<s///> では、区切りとしてカーリーブレースを使っています。 -スラッシュ以外 -の区切りを選択することによって、パターンの中に存在する区切り記号 -と同じものをクォートする手間を省くことができます。 +スラッシュ以外の区切りを選択することによって、パターンの中に存在する +区切り記号と同じものをクォートする手間を省くことができます。 s/\/usr\/local/\/usr\/share/g; # bad delimiter choice s#/usr/local#/usr/share#g; # better @@ -157,8 +159,7 @@ =head2 I'm having trouble matching over more than one line. What's wrong? X<regex, multiline> X<regexp, multiline> X<regular expression, multiline> -(二行以上に対するマッチングでトラブルがありました。 -何が悪いのでしょう?) +(二行以上に対するマッチングでトラブルがありました。何が悪いのでしょう?) =begin original @@ -183,8 +184,8 @@ 複数行のデータを一つの文字列にする方法はたくさんあります。 これを、入力を読み込んでいる間自動で行なわせたいというのであれば、 -一度に二行以上読ませるために $/を(パラグラフ単位で読み込みたいなら ''を、 -ファイル全体を読み込みたいなら C<undef>を)設定したくなるでしょう。 +一度に二行以上読ませるために $/を(パラグラフ単位で読み込みたいなら '' を、 +ファイル全体を読み込みたいなら C<undef> を)設定したくなるでしょう。 =begin original @@ -196,9 +197,9 @@ =end original -あなたが使いたいのは C</s>かC</m>のいずれなのか(あるいはこれら両方なのか)を -決めるのを助けるために、L<perlre>を読んでください: -C</s>はドットが改行を含むようにしますし、C</m>はキャレットとドル記号が +あなたが使いたいのは C</s> か C</m> のいずれなのか(あるいはこれら +両方なのか)を決めるのを助けるために、L<perlre> を読んでください: +C</s> はドットが改行を含むようにしますし、C</m> はキャレットとドル記号が 文字列の両端だけでなく改行の前後でマッチするようにします。 そして、複数行に渡る文字列を取得するようにさせる必要があります。 @@ -218,12 +219,11 @@ たとえば、以下に挙げるプログラムは重複した単語を、たとえそれが行を またがっていても(ただしパラグラフはまたがっていない)探し出すものです。 この例では、C</s>の必要はありません。 -なぜなら、この行をまたがらせたい正規表現で -ドットを使っていないからです。 +なぜなら、この行をまたがらせたい正規表現でドットを使っていないからです。 C</m>を使う必要もありません。 -それは、キャレットやドル記号をレコードの中にある改行の前後でマッチさせることは -望んでいないからです。 -しかし、$/をデフォルト以外のものに設定することは避けられませんし、 +それは、キャレットやドル記号をレコードの中にある改行の前後で +マッチさせることは望んでいないからです。 +しかし、$/ をデフォルト以外のものに設定することは避けられませんし、 そうしなければ複数行レコードを読み込むことはできないのです。 $/ = ''; # read in more whole paragraph, not just one line @@ -256,7 +256,7 @@ =end original -次の例は、パラグラフ中のSTARTとENDに挟まれた部分を検索するものです: +次の例は、パラグラフ中の START と END に挟まれた部分を検索するものです: undef $/; # read in whole file, not just one line or paragraph while ( <> ) { @@ -277,7 +277,7 @@ =end original -Perlの C<..>演算子を使えます(L<perlop>に説明があります)。 +Perlの C<..> 演算子を使えます(L<perlop> に説明があります)。 perl -ne 'print if /START/ .. /END/' file1 file2 ... @@ -299,7 +299,7 @@ =end original -しかし、C<START>とC<END>が現れるのを入れ子にさせたいというのであれば、 +しかし、C<START> と C<END> が現れるのを入れ子にさせたいというのであれば、 このセクションにある質問で説明されている問題に直面することになります。 =begin original @@ -322,6 +322,8 @@ X<$/, regexes in> X<$INPUT_RECORD_SEPARATOR, regexes in> X<$RS, regexes in> +($/ に正規表現を入れたけど動きません。何が悪いの?) + =begin original $/ has to be a string. You can use these examples if you really need to @@ -539,8 +541,7 @@ =head2 How can I make C<\w> match national character sets? X<\w> -(C<\w> がnational characterにマッチするように -するにはどうすれば良いですか?) +(C<\w> がローカルな文字セットにマッチするようにするには?) =begin original @@ -791,7 +792,7 @@ =end original 実際これは可能なのですが、あなたが考えているよりも非常に難しいものです。 -たとえば次の一行野郎 (one-liner)はほとんどの場合にうまく行きますが、 +たとえば次の一行野郎 (one-liner) はほとんどの場合にうまく行きますが、 すべての場合ではありません。 perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c @@ -807,8 +808,8 @@ そう、これは C のプログラムを簡単に考えすぎているのです。 特に、クォートされた文字列にコメントが出現するということを考慮していません。 -このため、Jeffrey Friedl が作成し, -後に Fred Curtis によって修正された次の例のようなことが必要になります。 +このため、Jeffrey Friedl が作成し、後に Fred Curtis によって修正された +次の例のようなことが必要になります。 $/ = undef; $_ = <>; @@ -914,7 +915,7 @@ CPAN には、コンテキストに依存したテキストにマッチングするために有用な 多くのモジュールがあります。 Damian Conway は Regexp::Common でいくつかの有用なパターンを提供しています。 -Text::Balanced もじゅーるはこの問題に対する一般的な解決法を提供します。 +Text::Balanced モジュールはこの問題に対する一般的な解決法を提供します。 =begin original @@ -942,8 +943,8 @@ ネストする可能性のある C<`> と C<'>, C<{> と C<}>, C<(> と C<)> のような 単一キャラクタのバランスを検査するための精巧なサブルーチンが、 -http://www.cpan.org/authors/id/TOMC/scripts/pull_quotes.gz -にあります(7-bit ASCII 専用)。 +http://www.cpan.org/authors/id/TOMC/scripts/pull_quotes.gz に +あります(7-bit ASCII 専用)。 =begin original @@ -1001,14 +1002,14 @@ 二番目の置換が、“y ”を見つけてすぐにマッチングを中断していることに 注目してください。 -量指定子 C<*?> は正規表現エンジンに対して、 -あなたが熱いジャガイモを扱っているときのように、可能な限り早く -マッチするものを見つけて制御を次の行に渡すように効果的に指示します。 +量指定子 C<*?> は正規表現エンジンに対して、あなたが熱いジャガイモを +扱っているときのように、可能な限り早くマッチするものを見つけて制御を次の行に +渡すように効果的に指示します。 =head2 How do I process each word on each line? X<word> -(各行の、各単語毎に処理をするにはどうすれば良いですか?) +(各行の単語単位に処理をするにはどうすれば良いですか?) =begin original @@ -1041,7 +1042,8 @@ =end original -アルファベットもしくは数字の並びのみを対象とするには以下のようにしてできます。 +アルファベットもしくは数字の並びのみを対象とするには以下のようにして +できます。 while (<>) { foreach $word (m/(\w+)/g) { @@ -1065,7 +1067,7 @@ これを行うためには、入力ストリームにある単語のそれぞれについて解析する 必要があります。 私たちはここで、一つ前の質問と同様に、非空白文字の塊を語と -するのではなく、アルファベット、ハイフン、アポストロフィ、の塊を語とします: +するのではなく、英字、ハイフン、アポストロフィ、の塊を語とします: while (<>) { while ( /(\b[^\W_\d][\w'-]+\b)/g ) { # misses "`sheep'" @@ -1660,7 +1662,6 @@ あなたの目的がリスト全体に対して反復することなら、for ループを 使ってください。 - =begin original In perls older than 5.8.1, map suffers from this problem as well. @@ -1704,12 +1705,11 @@ =end original -If you are stuck with older Perls, you can do Unicode with the -C<Unicode::String> module, and character conversions using the -C<Unicode::Map8> and C<Unicode::Map> modules. +もしもっと古い Perl に捕まっているなら、C<Unicode::String> モジュールで +Unicode ができ、C<Unicode::Map8> と C<Unicode::Map> のモジュールを使って +文字変換ができます。 日本語エンコーディングを使っているなら、jperl 5.005_03 を使ってみたいかも しれません。 -(TBT) =begin original @@ -1812,7 +1812,7 @@ =end original 以下は Benjamin Goldberg による、同じことをもう少しましに行うもので、 -ゼロ幅負前方参照アサーションを使っています。 +ゼロ幅否定前方参照アサーションを使っています。 print "found GX!\n" if $martian =~ m/ (?<![A-Z]) @@ -1828,10 +1828,10 @@ =end original -This succeeds if the "martian" character GX is in the string, and fails -otherwise. If you don't like using (?<!), a zero-width negative -look-behind assertion, you can replace (?<![A-Z]) with (?:^|[^A-Z]). -(TBT) +これはもし "martian" 文字 GX が文字列にあれば成功し、そうでなければ +失敗します。 +ゼロ幅否定前方参照アサーション (?<!) を使いたくないなら、(?<![A-Z]) を +(?:^|[^A-Z]) で置き換えられます。 =begin original @@ -1879,12 +1879,10 @@ =end original -The match operator is a double quote context, so you can interpolate -your variable just like a double quoted string. In this case, you -read the regular expression as user input and store it in C<$regex>. -Once you have the pattern in C<$regex>, you use that variable in the -match operator. -(TBT) +マッチング演算子はダブルクォートコンテキストなので、ダブルクォート文字列と +同様に変数展開できます。 +個の場合、正規表現をユーザー入力として読み込んで、C<$regex> に保管します。 +パターンが C<$regex> に入れば、この変数をマッチング演算子の中で使えます。 chomp( my $regex = <STDIN> ); @@ -1898,10 +1896,9 @@ =end original -Any regular expression special characters in C<$regex> are still -special, and the pattern still has to be valid or Perl will complain. -For instance, in this pattern there is an unpaired parenthesis. -(TBT) +C<$regex> 内の全ての正規表現特殊文字は特殊なままで、パターンが +有効でなければ Perl はエラーを出します。 +例えば、このパターンには組になっていないかっこがあります。 my $regex = "Unmatched ( paren"; @@ -1917,7 +1914,7 @@ Perl が正規表現をコンパイルする時に、かっこをマッチング記憶の開始として 扱います。 -閉じかっこが見つからないと、警告が出ます: +閉じかっこが見つからないと、エラーが出ます: Unmatched ( in regex; marked by <-- HERE in m/Unmatched ( <-- HERE paren/ at script line 3. Index: docs/perl/5.10.0/perlfaq7.pod diff -u docs/perl/5.10.0/perlfaq7.pod:1.4 docs/perl/5.10.0/perlfaq7.pod:1.5 --- docs/perl/5.10.0/perlfaq7.pod:1.4 Thu Jun 12 04:36:31 2008 +++ docs/perl/5.10.0/perlfaq7.pod Fri Jun 13 03:34:57 2008 @@ -37,7 +37,8 @@ =end original BNFはありませんが、もし多少の勇気を持ちあわせているのであれば -配布ソースに含まれている perly.y にある yacc 文法をいじくりまわすことができます。 +配布ソースに含まれている perly.y にある yacc 文法をいじくりまわすことが +できます。 その文法は非常に賢い字句解析ルーチンに依存したものなので、 toke.c を眺める準備もしておきましょう。 @@ -82,7 +83,7 @@ @ 配列に対するもの % ハッシュ(連想配列)に対するもの & サブルーチン(またの名を関数、手続き、メソッド)に対するもの - * シンボル名に対する全ての型。バージョン 4 ではポインターのように + * シンボル名に対する全ての型。バージョン 4 ではポインタのように 使われていましたが、新しい perl ではリファレンスが使えます。 =begin original @@ -102,7 +103,7 @@ =end original - <> あるファイルハンドルからレコードを入力するのに使われます + <> あるファイルハンドルからレコードを入力するのに使われます。 \ なにかのリファレンスを取ります。 =begin original @@ -289,7 +290,8 @@ =end original 全ての句読点変数(punctuation variable)と同様、現時点では C<$^W> に対して -my() を使うことはできず、local() だけしか使えないということに注意してください。 +my() を使うことはできず、local() だけしか使えないということに +注意してください。 =head2 What's an extension? @@ -302,7 +304,8 @@ =end original -エクステンションとは、Perl からコンパイル済みの C コードを呼び出すための方法です。 +エクステンションとは、Perl からコンパイル済みの C コードを呼び出すための +方法です。 エクステンションについて知るには L<perlxstut> を読むのが良いでしょう。 =head2 Why do Perl operators have different precedence than C operators? @@ -455,10 +458,8 @@ L<perlmod>, L<perlmodlib>, L<perlmodstyle> はモジュールに関する全ての 不愉快な詳細について説明しています。 -L<perlnewmod> gives a brief -overview of the process along with a couple of suggestions -about style. -(TBT) +L<perlnewmod> にはこのプロセスに関する大まかな概要と、スタイルに関する +いくつかの忠告があります。 =begin original @@ -605,8 +606,8 @@ =end original -クラスとオブジェクトについての入門は L<perltoot>を参照してください。 -同様に、L<perlobj> と L<perlbot>も参照してください。 +クラスとオブジェクトについての入門は L<perltoot> を参照してください。 +同様に、L<perlobj> と L<perlbot> も参照してください。 =head2 How can I tell if a variable is tainted? @@ -990,13 +991,6 @@ =end original -C<qr//> の末尾に付けることができるフラグに注意してください。 -このパターンは一度だけコンパイル時にコンパイルされ、 -実行時にはコンパイルされません。 -このしゃれた C<qr//> 記法は 5.005 リリースで初めて提供されました。 -それまでは、この問題に対して遥かに直感的でない手法をとらなければ -なりませんでした。 -例えば、先ほどのコードを C<qr//> なしで書くと: 以下の例は、c<qr//>を使って正規表現として比較すべき文字列を渡す方法の例です: sub compare($$) { @@ -1067,9 +1061,8 @@ =end original -これらのことに関してとてもとても賢明になるには、 -Jeffrey Friedl による O'Reilly の本 I<Mastering Regular Expressions> を -読むことでしょう。 +これらのことに関してとてもとても賢明になるには、Jeffrey Friedl による +O'Reilly の本 I<Mastering Regular Expressions> を読むことでしょう。 特に 273 ページにある Build_MatchMany_Function() は興味深いものです。 この本に関する完全な情報は L<perlfaq2> にあります。 @@ -1254,7 +1247,8 @@ =head2 What's the difference between dynamic and lexical (static) scoping? Between local() and my()? -(動的スコープとレキシカル(または静的)スコープとの間の違いは何ですか? local() と my() との違いは?) +(動的スコープとレキシカル(または静的)スコープとの間の違いは何ですか? +local() と my() との違いは?) =begin original @@ -1282,11 +1276,12 @@ =end original -C<my($x)> は、現在のサブルーチンにおいてのみ参照できる変数を新たに生成します。 +C<my($x)> は、現在のサブルーチンにおいてのみ参照できる変数を新たに +生成します。 これはコンパイル時に行われるので、レキシカルスコープだとか -静的スコープと呼ばれます。my() はプライベート変数に作用し、 -レキシカル変数とか、(間違って)静的(スコープを持った)変数と -呼ばれることもあります。 +静的スコープと呼ばれます。 +my() はプライベート変数に作用し、レキシカル変数とか、(間違って)静的 +(スコープを持った)変数と呼ばれることもあります。 =begin original @@ -1349,8 +1344,7 @@ =end original -このことをより詳しく説明している -See L<perlsub/"Private Variables via my()"> と +このことをより詳しく説明している L<perlsub/"Private Variables via my()"> と L<perlsub/"Temporary Values via local()"> を参照してください。 =head2 How can I access a dynamic variable while a similarly named lexical is in scope? @@ -1450,7 +1444,7 @@ 読み込み操作 <FH> は Perlの関数や演算子の多くと同じくそれが呼び出されたときの コンテキストを見分けることができて、それに応じて適切に振る舞います。 一般的には、scalar() 関数が助けになるでしょう。 -その関数は(一般的な神話(myth)とは反して)引数となるデータに対して +その関数は(一般的な神話とは反して)引数となるデータに対して 何も行いませんが、引数がスカラとして振る舞うように指示します。 関数のスカラ時の振る舞いが定義されていないのであれば、 当然ながらこれはあなたの助けにはなりません(sort() がそうです)。 @@ -1503,7 +1497,7 @@ =end original open() のようなあらかじめ定義されている関数をオーバーライドしたいのであれば、 -異なるモジュールから新しい定義をインポートする必要があるでしょう。 +異なるモジュールから新しい定義をインポートする必要があります。 L<perlsub/"Overriding Built-in Functions"> を参照してください。 L<perltoot/"Class::Template"> にも例があります。 @@ -1526,7 +1520,7 @@ =end original -親クラス郡における不明瞭なメソッド呼び出しについて考えているのなら、 +親クラスにおける不明瞭なメソッド呼び出しについて考えているのなら、 L<perltoot/"Overridden Methods"> を参照してください。 =head2 What's the difference between calling a function as &foo and foo()? @@ -1544,7 +1538,7 @@ =end original 関数を C<&foo> として呼び出したとき、その関数はプロトタイプを無視して -カレントの@_の値全てにアクセスすることができます。 +カレントの @_ の値全てにアクセスすることができます。 これはつまり、空の @_ を受け取るのではなくてあなたが使っていた それを受け取るということなのです! これは厳密にバグとは考えられていませんが(L<perlsub> に説明があります)、 @@ -1804,9 +1798,8 @@ =end original -モジュールの作り方については L<perlmod> を、 -間接オブジェクトの問題点については L<perlobj/"WARNING"> を -確認してください。 +モジュールの作り方については L<perlmod> を、間接オブジェクトの問題点に +ついては L<perlobj/"WARNING"> を確認してください。 =head2 How can I find out my current package? @@ -1981,8 +1974,8 @@ 一つ目の理由は、このテクニックは I<グローバル変数でのみ動作する> からです。 つまり、もし上記の例において $fred が my() で作成されたレキシカル変数の場合、 このコードは全く動作しません。 -プライベートなレキシカル変数を飛ばして、 -思いがけずグローバル変数にアクセスすることになります。 +プライベートなレキシカル変数を飛ばして、思いがけずグローバル変数に +アクセスすることになります。 グローバル変数は、簡単に衝突し、一般に拡張性がなく、混乱するコードを 作ることになるので、よくないものです。 @@ -2012,9 +2005,8 @@ 変数に他の変数の名前を記録するというのがよくない考えであるという 別の理由としては、このような疑問はしばしば Perl のデータ構造、 特にハッシュに関する理解の不足から発生するからです。 -シンボリックリファレンスを使うことによって、 -ユーザー定義のハッシュの代わりにパッケージのシンボルテーブルハッシュ -(C<%main::> など)を使うことができます。 +シンボリックリファレンスを使うことによって、ユーザー定義のハッシュの代わりに +パッケージのシンボルテーブルハッシュ(C<%main::> など)を使うことができます。 解決法は、代わりに自分自身のハッシュや真のリファレンスを使うことです。 $USER_VARS{"fred"} = 23; @@ -2033,7 +2025,8 @@ =end original -ここではシンボリックリファレンスの代わりに %USER_VARS ハッシュを使っています。 +ここではシンボリックリファレンスの代わりに %USER_VARS ハッシュを +使っています。 時々これはユーザーから文字列を変数へのリファレンスとして読み込んで、 それを perl プログラムの変数の値として拡張することがあります。 これもよくない考えです。 @@ -2052,8 +2045,8 @@ =end original -%USER_VARS のようなハッシュを保存し、このハッシュの -エントリを参照する変数リファレンスを持つよりよい方法です: +%USER_VARS のようなハッシュを保存し、このハッシュのエントリを参照する +変数リファレンスを持つよりよい方法です: $str =~ s/\$(\w+)/$USER_VARS{$1}/g; # no /e here at all @@ -2172,8 +2165,8 @@ 使いたくなることがあるかもしれません。 これには、フォーマット、ハンドル、サブルーチンには関係ありません。 これらは常にグローバルだからです--これらに my() を使うことはできません。 -おそらく、スカラ、配列、ハッシュのために--そして普通はサブルーチンのために-- -だけ、ハードリファレンスが必要でしょう。 +おそらく、スカラ、配列、ハッシュのために--そして普通はサブルーチンの +ために--だけ、ハードリファレンスが必要でしょう。 =head2 What does "bad interpreter" mean? Index: docs/perl/5.10.0/perlfaq8.pod diff -u docs/perl/5.10.0/perlfaq8.pod:1.4 docs/perl/5.10.0/perlfaq8.pod:1.5 --- docs/perl/5.10.0/perlfaq8.pod:1.4 Thu Jun 12 04:36:31 2008 +++ docs/perl/5.10.0/perlfaq8.pod Fri Jun 13 03:34:57 2008 @@ -34,7 +34,8 @@ =end original あなたの使っているオペレーティングシステム向けの移植について特有のことは、 -それに関する FAQ とドキュメント(L<perlvms>, L<perlplan9> など)を読んでください。 +それに関する FAQ とドキュメント(L<perlvms>, L<perlplan9> など)を +読んでください。 そこには、あなたの使う perl についてのより詳しい情報があります。 =head2 How do I find out which operating system I'm running under? @@ -73,7 +74,7 @@ =head2 How do I do fancy stuff with the keyboard/screen/mouse? -(キーボード/画面/マウスの凝った機能を使うにはどうすればいいでしょう?) +(キーボード/画面/マウスの凝った機能を使うには?) =begin original @@ -186,9 +187,9 @@ =end original -CPAN にある Term::ReadKey モジュールは、 -B<stty> をキー毎にシェルに送るよりもより効果的に行ってくれて -使うのが簡単なインターフェースを提供します。 +CPAN にある Term::ReadKey モジュールは、B<stty> をキー毎にシェルに +送るよりもより効果的に行ってくれて使うのが簡単なインターフェースを +提供します。 このモジュールは限定的ながら Windows にも対応しています。 use Term::ReadKey; @@ -222,8 +223,7 @@ =end original そして以下の例は、HotKey モジュールを使ったものです。 -この HotKey モジュールは POSIX の termio 構造体の操作を -包み隠します。 +この HotKey モジュールは POSIX の termio 構造体の操作を包み隠します。 # HotKey.pm package HotKey; @@ -350,7 +350,7 @@ =end original CPAN にある Term::ReadKey モジュールをインストールしているのなら、 -キャラクターやピクセルでの幅と高さを得ることができます: +文字やピクセルでの幅と高さを得ることができます: use Term::ReadKey; ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize(); @@ -388,9 +388,7 @@ =end original (この質問は web とは関係ありません。 -それに関しては 別の FAQ を -参照してください。 -) +それに関しては 別の FAQ を参照してください。) =begin original @@ -505,7 +503,7 @@ perl の移植の一部では、"\r" と "\n" は通常の(UNIX の) ASCII 値である "\012" と "\015" とは異なったものになっています。 八進表記 ("\015") や十六進表記("0x0D")、 -あるいはコントロールキャラクター指定 ("\cM") を使って +あるいは制御文字指定 ("\cM") を使って 直接数値を与える必要があるかもしれません。 =begin original @@ -551,9 +549,9 @@ デバイスに print() した時にそのキャラクタが反映されるようにしたいのなら、 そのハンドルを自動フラッシュするようにしたいでしょう。 自動フラッシュを制御するのに、C<$|> という変数と、select() を -使うことができます(L<perlvar/$E<verbar>>とL<perlfunc/select> または L<perlfaq5>, -"How do I flush/unbuffer an output filehandle? Why must I do this?"を -参照してください)。 +使うことができます(L<perlvar/$E<verbar>>とL<perlfunc/select> または +L<perlfaq5> の "How do I flush/unbuffer an output filehandle? Why must +I do this?" を参照してください)。 $oldh = select(DEV); $| = 1; @@ -576,9 +574,8 @@ =end original -$|というような変数に戸惑いを感じていて、 -ニ、三千行のプログラムを引っ張りこむことを -気にしないのなら以下のようにできます: +$| というような変数に戸惑いを感じていて、数千行のプログラムを +引っ張りこむことを気にしないのなら以下のようにできます: use IO::Handle; DEV->autoflush(1); @@ -608,13 +605,12 @@ =end original -ブロッキング read()やブロッキングsysread()を行うのであれば、 +ブロッキング read() やブロッキング sysread() を行うのであれば、 タイムアウトを実現するためにalarmハンドラーをアレンジする必要があるでしょう -(L<perlfunc/alarm>を参照)。 -もしノンブロッキング open を持っているのであれば、 -デバイスが入出力完了の状態であるかどうかを決定するために -四つの引数を取る select() を使う必要があるであろう -ノンブロッキング read も同様に持っていることでしょう +(L<perlfunc/alarm> を参照)。 +もしノンブロッキング open を持っているのであれば、デバイスが入出力完了の +状態であるかどうかを決定するために四つの引数を取る select() を使う必要が +あるであろうノンブロッキング read も同様に持っていることでしょう (L<perlfunc/"select">を参照)。 =back @@ -630,7 +626,7 @@ caller-id ボックスから読み出すことに挑戦したことで有名な Jamie Zawinski C<< <jwd****@netsc*****> >> は、 -sysreadやsysopen、POSIX の tcgetattr その他さまざまな関数を扱い +sysread や sysopen、POSIX の tcgetattr その他さまざまな関数を扱い 悪戦苦闘しながら、最終的には以下のようものを作りました: sub open_modem { @@ -658,7 +654,7 @@ =end original -特別なハードウェアに非常に多額のお金を掛けてください。 +特別なハードウェアに非常に多額のお金を掛けてください; しかしこれはあなたが何について話しているかによります。 =begin original @@ -729,7 +725,7 @@ =end original -L<perlfunc/"fork"> で説明されているforkを使ってできます +L<perlfunc/"fork"> で説明されている fork を使ってできます (L<perlipc> には例もあります)。 あなたが UNIX 的なシステムを使っているなら、注意すべき事柄があります。 @@ -833,7 +829,7 @@ =head2 How do I trap control characters/signals? -(コントロールキャラクターやシグナルをトラップするには?) +(制御文字やシグナルをトラップするには?) =begin original @@ -845,8 +841,8 @@ =end original -実際にはコントロールキャラクターを“トラップ”できません。 -その代わりに、そのキャラクターが生成して +実際には制御文字を“トラップ”できません。 +その代わりに、その文字が生成して 端末のフォアグラウンドプロセスに送られることになる シグナルがトラップできます。 シグナルは L<perlipc/"Signals"> とらくだ本の "Signal" の章に @@ -959,7 +955,7 @@ =head2 How can I sleep() or alarm() for under a second? X<Time::HiRes> X<BSD::Itimer> X<sleep> X<select> -(どうすれば一秒未満の時間に対する sleep() や alarm() ができますか?) +(一秒未満の時間に対する sleep() や alarm() をするには?) =begin original @@ -1010,7 +1006,7 @@ =head2 How can I do an atexit() or setjmp()/longjmp()? (Exception handling) -(どうすれば atexit() や setjmp()/longjmp() ができますか? (例外処理)) +(atexit() や setjmp()/longjmp() をするには? (例外処理)) =begin original @@ -1049,7 +1045,7 @@ END ブロックは、トラップされないシグナルが プログラムを強制終了させた場合には呼び出されません。 -したがって、END ブロックを使う場合には同時に +したがって、END ブロックを使う場合には同時に以下のようにするべきです: use sigtrap qw(die normal-signals); @@ -1066,7 +1062,7 @@ Perl の例外処理機構は eval() 演算子です。 setjmp() として eval() を、longjmp() として die() を使うことができます。 これに関する詳細は、シグナルに関するセクション、 -特にL<perlipc/"Signals">にあるブロッキング flock() のための +特に L<perlipc/"Signals"> にあるブロッキング flock() のための タイムアウトハンドラーと、らくだ本の "Signal" の章を参照してください。 =begin original @@ -1122,7 +1118,7 @@ =head2 How can I call my system's unique C functions from Perl? -(どうすれば、Perl から私のシステムに固有の C 関数を呼び出すことができますか?) +(Perl から私のシステムに固有の C 関数を呼び出すには?) =begin original @@ -1157,6 +1153,7 @@ Windows, try Win32::API. On Macs, try Mac::Carbon. If no module has an interface to the C function, you can inline a bit of C in your Perl source with Inline::C. +(TBT) =head2 Where do I get the include files to do ioctl() or syscall()? @@ -1239,7 +1236,7 @@ =head2 How can I open a pipe both to and from a command? -(どうすればあるコマンドに対する双方向のパイプをオープンできますか?) +(あるコマンドに対する双方向のパイプをオープンするには?) =begin original @@ -1253,12 +1250,11 @@ =end original IPC::Open2 モジュール(標準の perl の配布に含まれています)は内部的に -pipe()、fork()、exec() を使った easy-to-use なアプローチです。 +pipe()、fork()、exec() を使った使いやすい手法です。 ただし、ドキュメントにあるデッドロックの警告をよく読んでください (L<IPC::Open2>を参照)。 -L<perlipc/"Bidirectional Communication -with Another Process"> と L<perlipc/"Bidirectional Communication with -Yourself"> も参照してください。 +L<perlipc/"Bidirectional Communication with Another Process"> と +L<perlipc/"Bidirectional Communication with Yourself"> も参照してください。 =begin original @@ -1268,10 +1264,9 @@ =end original -IPC::Open3 モジュール(標準配布パッケージに含まれています)を -使おうと考えたかもしれませんが、これは IPC::Open2 とは -引数の順序が違うということに注意してください(L<IPC::Open3> を -参照してください)。 +IPC::Open3 モジュール(標準配布パッケージに含まれています)も使えますが、 +これは IPC::Open2 とは引数の順序が違うということに注意してください +(L<IPC::Open3> を参照してください)。 =head2 Why can't I get the output of a command with system()? @@ -1298,7 +1293,7 @@ =head2 How can I capture STDERR from an external command? -(どうすれば外部コマンドの STDERR を捕捉できますか?) +(外部コマンドの STDERR を捕捉するには?) =begin original @@ -1510,9 +1505,9 @@ =end original -backticlsの中では、csh(1) のリダイレクト構文ではなく、 -Bourne shell (sh(1)) のリダイレクト構文を -B<使わなければならない> ということに注意してください! +backticlsの中では、csh(1) のリダイレクト構文ではなく、Bourne shell +(sh(1)) のリダイレクト構文を B<使わなければならない> ということに +注意してください! なぜ Perl の system()、backticks、パイプオープンの全てで Bourne シェルの ものを使うかは http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz にある "Far More Than You Ever Wanted To Know" の F<versus/csh.whynot> という記事で @@ -1584,8 +1579,7 @@ =end original これらの例では順序が重要です。 -なぜなら、 -シェルがリダイレクトのためのファイル記述子を処理する順序は +なぜなら、シェルがリダイレクトのためのファイル記述子を処理する順序は 正確に左から右へという順になっているからです。 system("prog args 1>tmpfile 2>&1"); @@ -1599,11 +1593,9 @@ =end original -最初のコマンドは標準出力と標準エラー出力の両方を -一時ファイルに送ります。 -二番目のコマンドは古い標準出力だけを -ファイルへと送り、古い標準エラー出力は古い標準出力へと -送り出します。 +最初のコマンドは標準出力と標準エラー出力の両方を一時ファイルに送ります。 +二番目のコマンドは古い標準出力だけをファイルへと送り、古い標準エラー出力は +古い標準出力へと送り出します。 =head2 Why doesn't open() return an error when a pipe open fails? @@ -1735,7 +1727,7 @@ =head2 How can I call backticks without shell processing? -(どうすればシェルの処理をせずに逆クォートを呼び出すことができますか?) +(シェルの処理をせずに逆クォートを呼び出すには?) =begin original @@ -1806,8 +1798,7 @@ もしあなたが Windows を使っているのなら、この悩ましい問題を 解決する方法は全くありません。 -たとえ Perl が C<fork()> をエミュレートしたとしても、 -まだうまくいきません。 +たとえ Perl が C<fork()> をエミュレートしたとしても、まだうまくいきません。 なぜならマイクロソフトは argc/argv 形式の API を提供していないからです。 =head2 Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)? @@ -1883,7 +1874,7 @@ =head2 How can I convert my shell script to perl? -(どうやれば私のシェルスクリプトを perl に変換できますか?) +(私のシェルスクリプトを perl に変換するには?) =begin original @@ -1898,8 +1889,7 @@ =end original Perl を学び、自分で書き直しましょう。 -まじめな話、単純なコンバータと -いうものはありません。 +まじめな話、単純なコンバータというものはありません。 シェルで行うには不格好になるようなことも Perl では簡単に行うことができ、 そして、このとても不格好なことがシェル→ perl コンバーターを作製することを ほとんど不可能なことにしているのです。 @@ -1922,9 +1912,8 @@ Net::FTP, TCP::Client, Net::Telnet といったモジュール(CPAN で入手可能です)を 試してみてください。 -http://www.cpan.org/scripts/netstuff/telnet.emul.shar -も telnet プロトコルをエミュレートする助けになるでしょうが、 -Net::Telnet は使うのがとても簡単です。 +http://www.cpan.org/scripts/netstuff/telnet.emul.shar も telnet プロトコルを +エミュレートする助けになるでしょうが、Net::Telnet は使うのがとても簡単です。 =begin original @@ -1953,7 +1942,7 @@ =head2 How can I write expect in Perl? -(どうすれば Perlで expect を書けますか?) +( Perl で expect を書くには?) =begin original @@ -1989,7 +1978,8 @@ セキュリティ上の理由でそれを行おうとしてるのであれば、 重要な情報が引数として与えられることがないようにプログラムを 書き直すべきだということに注意してください。 -引数を隠すことは、あなたのプログラムを完全に安全なものにすることはありません。 +引数を隠すことは、あなたのプログラムを完全に安全なものにすることは +ありません。 =begin original @@ -2010,7 +2000,7 @@ =head2 I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible? -(perl スクリプトの中で、ディレクトリを変更したり環境変数を変更しました. +(perl スクリプトの中で、ディレクトリを変更したり環境変数を変更しました。 なぜ、スクリプトを終了したときこれらの変更は無効になってしまうのでしょうか? 変更が反映されるようにするには?) @@ -2279,8 +2269,8 @@ =end original -SIGCHLD を受け取ったときに wait() を呼び出すように L<perlipc/"Signals"> にある -刈り取り機プログラム (reaper code) を使うか、 +SIGCHLD を受け取ったときに wait() を呼び出すように L<perlipc/"Signals"> に +ある刈り取り機プログラム (reaper code) を使うか、 L<perlfaq8/"How do I start a process in the background?"> で 説明されている double-fork テクニックを使います。 @@ -2330,8 +2320,8 @@ =end original できません。 -system()呼び出しを模倣する必要があり -(L<perlipc>のサンプルコードを参照してください)、サブプロセスでのシグナルを送る +system() 呼び出しを模倣する必要があり(L<perlipc> のサンプルコードを +参照してください)、サブプロセスでのシグナルを送る INT シグナルのためのシグナルハンドラーを持つ必要があります。 あるいは、以下のようにしてチェックすることもできます: @@ -2352,9 +2342,9 @@ =end original 幸運にもあなたの使っているシステムがノンブロッキング読み出し -(ほとんどのUNIX的システムはサポートしています)をサポートしているのであれば、 -FcntlモジュールのO_NDELAY や O_NONBLOCK というフラグを -sysopne()と一緒に使うだけです。 +(ほとんどの UNIX 的システムはサポートしています)をサポートしているのであれば、 +Fcntl モジュールの O_NDELAY や O_NONBLOCK というフラグを +sysopne() と一緒に使うだけです。 use Fcntl; sysopen(FH, "/foo/somefile", O_WRONLY|O_NDELAY|O_CREAT, 0644) @@ -2598,7 +2588,7 @@ =end original -エクステンションのビルドについての詳細は +エクステンションのビルドについての詳細は L<ExtUtils::MakeMaker> を参照して下さい。 次の質問 "What's the difference between require and use?" も参照してください。