Kentaro Shirakata
argra****@users*****
2006年 8月 8日 (火) 01:56:49 JST
Index: docs/perl/5.6.1/perldiag.pod diff -u docs/perl/5.6.1/perldiag.pod:1.2 docs/perl/5.6.1/perldiag.pod:1.3 --- docs/perl/5.6.1/perldiag.pod:1.2 Tue Apr 25 04:21:11 2006 +++ docs/perl/5.6.1/perldiag.pod Tue Aug 8 01:56:49 2006 @@ -48,6 +48,8 @@ =end original +上記のうち、最初の三つ (W, D, S) に分類されるメッセージの大部分は +C<warings> プラグマで制御できます。 =begin original @@ -57,6 +59,8 @@ =end original +メッセージが C<warnings> プラグマで制御できる場合、 +警告カテゴリは以下の説明で分類文字と共に記されています。 =begin original @@ -97,6 +101,12 @@ =end original +メッセージは大文字小文字を無視してアルファベット順に並んでいます。 +これらの中には一般的なものもあります。 +変化する部分は %s またはその他の printf スタイルの表記をしています。 +これらの表記や、その他の英文字以外の文字は並び順に関しては +無視されています。 +メッセージを探すには、英文字以外は無視してください。 =over 4 @@ -133,6 +143,9 @@ =end original +(F) pack() と unpack() での '!' は特定のタイプの後にのみ +つけることができます。 +L<perlfunc/pack> を参照してください。 =item Ambiguous call resolved as CORE::%s(), qualify as such or use & @@ -274,6 +287,7 @@ =end original +(F) delete() の引数は以下のようにハッシュか配列の要素であるか: $foo{$bar} $ref->{"susie"}[12] @@ -284,6 +298,7 @@ =end original +あるいは以下のようにハッシュか配列のスライスでなければなりません: @foo[$bar, $baz, $xyzzy] @{$ref->[12]}{"susie", "queue"} @@ -298,6 +313,9 @@ =end original +(F) C<exists &sub> の形の exists() の引数はサブルーチン呼び出しではなく、 +サブルーチン名でなければなりません。 +C<exists &sub()> とするとこのエラーが生成されます。 =item Argument "%s" isn't numeric%s @@ -371,6 +389,8 @@ =end original +左辺値コンテキストで vec が呼び出されたとき、 +二つ目の引数は 0 以上でなければなりません。 =item Attempt to free non-arena SV: 0x%lx @@ -397,6 +417,11 @@ =end original +(P internal) Perl はストレージおよびハッシュキーとその他の +文字列へのアクセスを最適化するために、文字列の参照数テーブルを +管理しています。 +これは誰かがもうテーブルにない文字列の参照カウントを減らそうと +したことを示します。 =item Attempt to free temp prematurely @@ -460,6 +485,10 @@ =end original +(F) スレッドをそれ自身の中から join しようとしました。 +これは不可能な動作です。 +間違ったスレッドに join しようとしているか、 +あるいは join() を他のスレッドに移動させる必要があります。 =item Attempt to pack pointer to temporary value @@ -512,6 +541,9 @@ =end original +(F) You've used the /e switch to evaluate the replacement for a +substitution, but perl found a syntax error in the code to evaluate, +most likely an unexpected right brace '}'. =item Bad filehandle: %s @@ -549,6 +581,9 @@ =end original +This message can be seen quite often with DB_File on systems with "hard" +dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB> +which is left unnoticed if C<DB> uses I<forgiving> system malloc(). =item Bad hash @@ -570,6 +605,9 @@ =end original +(F) The index looked up in the hash found as the 0'th element of a +pseudo-hash is not legal. Index values must be at 1 or greater. +See L<perlref>. =item Badly placed ()'s @@ -581,6 +619,9 @@ =end original +(A) You've accidentally run your script through B<csh> instead +of Perl. Check the #! line, or manually feed your script into +Perl yourself. =item Bad name after %s:: @@ -620,6 +661,9 @@ =end original +(S malloc) An internal routine called realloc() on something that had +never been malloc()ed in the first place. Mandatory, but can be disabled +by setting environment variable C<PERL_BADFREE> to 1. =item Bad symbol for array @@ -2786,6 +2830,12 @@ =end original +(W io) 書き込み専用のファイルハンドルから読み込もうとしました。 +読み書きできるファイルハンドルにしたい場合は、 +ファイルのオープン時に "<" や何もなしではなく、 +"+<" か "+>" か "+>>" をつける必要があります。 +読み込み専用にしたい場合は、"<" を使ってください。 +L<perlfunc/open> を参照してください。 =item Final $ should be \$ or $name @@ -2886,7 +2936,7 @@ =end original -以下のようにすべきところをです: +以下のようにすべきです: if ($foo == 123) @@ -2896,7 +2946,7 @@ =end original -としています (あるいは似たようなこと)。 +(あるいは似たようなこと)。 =item %s found where operator expected @@ -3378,7 +3428,7 @@ =end original (P) 正規表現解析部に何か間違ったことが起こりました。 -<< HERE で正規表現のどこに問題が発見されたかを示しています。 +<<<HERE で正規表現のどこに問題が発見されたかを示しています。 =item %s (...) interpreted as function @@ -5355,8 +5405,7 @@ =end original - -=begin original +(S) 警告全体は以下のような形になります: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: @@ -5365,9 +5414,6 @@ are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). -=end original - - =begin original Exactly what were the failed locale settings varies. In the above the @@ -5485,6 +5531,7 @@ =end original +おそらく以下のように書いたのでしょう: @list = qw( a # a comment @@ -5497,6 +5544,7 @@ =end original +以下のように書くべきです: @list = qw( a @@ -5510,6 +5558,8 @@ =end original +本当にコメントをつけたいのなら、 +リストを昔のクォートとカンマの形で書いてください。 @list = ( 'a', # a comment @@ -5527,6 +5577,10 @@ =end original +(W qw) qw() リストに空白で分割された項目があります; +そのため、カンマは項目を分割する必要がありません。 +(ここで使われているのと違うデリミタを用いているかもしれません; +大括弧もよく使われます。) =begin original @@ -5534,6 +5588,7 @@ =end original +おそらく以下のように書いたのでしょう: qw! a, b, c !; @@ -5544,6 +5599,8 @@ =end original +リスト要素の中にリテラルのカンマを書いています。 +データの中にカンマを出したくないなら、カンマなしで書きます: qw! a b c !; @@ -5582,6 +5639,7 @@ =end original +(W deprecated) おそらく以下のように書いたのでしょう: sub doit { @@ -5594,6 +5652,7 @@ =end original +代わりに新しい定義の文法で書くべきです: sub doit : locked { @@ -5639,8 +5698,8 @@ =end original -という風に誤った解釈がなされます。 (古い open は、単項演算子と -リスト演算子の中間のようなものでした。) +という風に誤った解釈がなされます。 +(古い open は、単項演算子とリスト演算子の中間のようなものでした。) ファイルハンドルの前後を括弧で囲むか、"||" 演算子の代わりに "or" 演算子を使わなくてはなりません。 @@ -5652,6 +5711,7 @@ =end original +"Server error"を参照してください。 =item printf() on closed filehandle %s @@ -5662,7 +5722,7 @@ =end original -(W) 書き込みを行なおうとしたファイルハンドルは、既にクローズされています。 +(W closed) 書き込みを行なおうとしたファイルハンドルは、既にクローズされています。 ロジックの流れをチェックしてください。 =item print() on closed filehandle %s @@ -5674,7 +5734,7 @@ =end original -(W) print を行なおうとしたファイルハンドルは、既にクローズされています。 +(W closed) print を行なおうとしたファイルハンドルは、既にクローズされています。 ロジックの流れをチェックしてください。 =item Process terminated by SIG%s @@ -5745,7 +5805,7 @@ =end original -(W) 読み込みを行なおうとしたファイルハンドルは、既にクローズされています。 +(W closed) 読み込みを行なおうとしたファイルハンドルは、既にクローズされています。 ロジックの流れをチェックしてください。 =item Reallocation too large: %lx @@ -5857,6 +5917,10 @@ =end original +正規表現の中で C<\7> のような記述がありますが、 +正規表現の中に値を捕らえる括弧が 7 つありません。 +正規表現の中に値 7 を持つ文字を挿入したい場合、 +ゼロをつけて最低二桁の数値にする必要があります: C<\07> =begin original @@ -5865,6 +5929,7 @@ =end original +<< HERE で正規表現のどこに問題が発見されたかを示しています。 =item regexp memory corruption @@ -5876,7 +5941,7 @@ =end original (P) 正規表現コンパイラが渡したもので、正規表現エンジンが -処理できなくなった。 +処理できなくなりました。 =item Regexp out of space @@ -5898,6 +5963,9 @@ =end original +(F) 繰り返し回数として符号付き整数をオーバーフローするような +値は指定できません。 +L<perlfunc/pack> を参照してください。 =item Repeat count in unpack overflows @@ -5908,6 +5976,9 @@ =end original +(F) 繰り返し回数として符号付き整数をオーバーフローするような +値は指定できません。 +L<perlfunc/unpack> を参照してください。 =item Reversed %s= operator @@ -5956,6 +6027,14 @@ =end original +(W syntax) 配列の一つの要素を選ぶのに、(@ で示される) 配列 +スライスを用いました。 +一般には、($ で示される) スカラ値を使った方が良いと思われます。 +違いは、C<$foo[&bar]> とした場合、代入の対象としたときにも、 +添字を評価するときにも、常にスカラとして振る舞うのに対し、 +C<@foo[&bar]> の場合には、代入の対象としてもリストとして振る舞い、 +添字にもリストコンテキストを与えることになります。 +これは、1 つの添字だけを期待するときには、おかしなこととなるでしょう。 =begin original @@ -5966,6 +6045,10 @@ =end original +On the other hand, if you were actually hoping to treat the array +element as a list, you need to look into how references work, because +Perl will not magically convert between scalars and lists for you. See +L<perlref>. =item Scalar value @%s{%s} better written as $%s{%s} @@ -5984,9 +6067,9 @@ (W syntax) ハッシュの一つの要素を選ぶのに、(@ で示される) ハッシュ スライスを用いました。 一般には、($ で示される) スカラ値を使った方が良いと思われます。 -違いは、C<$foo[&bar]> とした場合、代入の対象としたときにも、 +違いは、C<$foo{&bar}> とした場合、代入の対象としたときにも、 添字を評価するときにも、常にスカラとして振る舞うのに対し、 -C<@foo[&bar]> の場合には、代入の対象としてもリストとして振る舞い、 +C<@foo{&bar}> の場合には、代入の対象としてもリストとして振る舞い、 添字にもリストコンテキストを与えることになります。 これは、1 つの添字だけを期待するときには、おかしなこととなるでしょう。 @@ -5999,6 +6082,10 @@ =end original +On the other hand, if you were actually hoping to treat the hash element +as a list, you need to look into how references work, because Perl will +not magically convert between scalars and lists for you. See +L<perlref>. =item Scalars leaked: %d @@ -6011,6 +6098,10 @@ =end original +(P) Something went wrong in Perl's internal bookkeeping of scalars: +not all scalar variables were deallocated by the time Perl exited. +What this usually indicates is a memory leak, which is of course bad, +especially if the Perl program is intended to be long-running. =item Script is not setuid/setgid in suidperl @@ -6117,6 +6208,9 @@ =end original +(F) 正規表現が不完全な拡張 (? で終わっています。 +<<<HERE で正規表現のどこに問題が発見されたかを示しています。 +L<perlre> を参照してください。 =item Sequence (?{...}) not terminated or not {}-balanced in %s @@ -6127,6 +6221,9 @@ =end original +(F) (?{...}) 節の中に大括弧がある場合、対応していなければなりません。 +Perl が正しく節の最後を検出するためです。 +L<perlre> を参照してください。 =item Sequence (?%s...) not implemented before << HERE mark in %s @@ -6143,7 +6240,6 @@ << HERE で正規表現のどこに問題が発見されたかを示しています。 L<perlre> を参照してください。 - =item Sequence (?%s...) not recognized before << HERE mark in %s =begin original @@ -6180,6 +6276,7 @@ =end original +"Server error" を参照してください。 =item Server error @@ -6194,6 +6291,12 @@ =end original +This is the error message generally seen in a browser window when trying +to run a CGI program (including SSI) over the web. The actual error text +varies widely from server to server. The most frequently-seen variants +are "500 Server error", "Method (something) not permitted", "Document +contains no data", "Premature end of script headers", and "Did not +produce a valid header". =begin original @@ -6201,6 +6304,7 @@ =end original +B<これは CGI のエラーであり、Perl のエラーではありません>. =begin original @@ -6213,8 +6317,12 @@ =end original - -=begin original +You need to make sure your script is executable, is accessible by the +user CGI is running the script under (which is probably not the user +account you tested it under), does not rely on any environment variables +(like PATH) from the user it isn't running under, and isn't in a +location where the CGI server can't find it, basically, more or less. +Please see the following for more information: http://www.perl.com/CPAN/doc/FAQs/cgi/idiots-guide.html http://www.perl.com/CPAN/doc/FAQs/cgi/perl-cgi-faq.html @@ -6222,15 +6330,13 @@ http://hoohoo.ncsa.uiuc.edu/cgi/interface.html http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html -=end original - - =begin original You should also look at L<perlfaq9>. =end original +L<perlfaq9> も見るべきでしょう。 =item setegid() not implemented @@ -6270,6 +6376,8 @@ =end original +(F) このシステムの setpgrp() は BSD 4.2 由来のもので、引数がありません。 +POSIX setpgid() はプロセス ID とプロセスグループ ID を引数にとります。 =item setrgid() not implemented @@ -6309,6 +6417,9 @@ =end original +(W closed) You tried to set a socket option on a closed socket. Did you +forget to check the return value of your socket() call? See +L<perlfunc/setsockopt>. =item Setuid/gid script is writable by world @@ -6342,6 +6453,8 @@ =end original +(F) C<require 'file'> と書くべきところで C<< require <file> >> と +書いています。 =item /%s/ should probably be written as "%s" @@ -6354,6 +6467,10 @@ =end original +(W syntax) You have used a pattern where Perl expected to find a string, +as in the first argument to C<join>. Perl will treat the true or false +result of matching the pattern against $_ as the string, which is +probably not what you had in mind. =item shutdown() on closed socket %s @@ -6674,6 +6791,8 @@ =end original +(A) スクリプトを perl ではなく Bourne shell で実行しようとしました。 +#! 行をチェックするか、スクリプトを直接 Perl で起動してください。 =item %s syntax OK @@ -6723,6 +6842,8 @@ =end original +(F) C<goto> で、Perl が届かないほど深くネストしたラベルに移動しようとしました。 +Perl は親切にもこれを拒否します。 =item tell() on unopened filehandle @@ -6937,8 +7058,8 @@ =end original - -=item Too many ('s +(A) スクリプトを perl ではなく B<csh> で実行しようとしました。 +#! 行をチェックするか、スクリプトを直接 Perl で起動してください。 =item trailing \ in regexp @@ -7196,7 +7317,6 @@ (F) unexec() ルーティンが何らかの理由によって失敗しました。 最初にインストールしたであろう、サイトの FSF 代表者にたずねてみてください。 - =item Unknown BYTEORDER =begin original @@ -7521,6 +7641,8 @@ =end original +(W untie) C<tie> (または C<tied>) から返されたオブジェクトが、 +C<untie> が呼び出されたときにまだ有効でした。 =item Useless use of %s in void context @@ -7563,6 +7685,9 @@ =end original +その他の良くあるエラーとしては、リストを作るのに中括弧や +大括弧を使うべきところで普通の括弧を使うことです。 +例えば、以下のように書いた場合です: $array = (1,2); @@ -7572,6 +7697,7 @@ =end original +以下のように書くべきです: $array = [1,2]; @@ -7741,6 +7867,12 @@ =end original +(D deprecated) The indicated bareword is a reserved word. Future +versions of perl may use it as a keyword, so you're better off either +explicitly quoting the word in a manner appropriate for its context of +use, or using a different name altogether. The warning can be +suppressed for subroutine names by either adding a C<&> prefix, or using +a package qualifier, e.g. C<&our()>, or C<Foo::our()>. =item Use of uninitialized value%s @@ -8010,6 +8142,7 @@ =end original +Perl が(想定していないところで)ワイド文字(>255)に遭遇しました。 =item write() on closed filehandle %s