PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



NAME
     perldiag - さまざまな Perl の診断メッセージ

DESCRIPTION
     これらのメッセージは以下のように分類されます (重要度が増す順
     に並べてあります):

         (W) 警告 (オプショナル)
         (D) A deprecation (オプショナル)
         (S) 重い警告 (必須)
         (F) 致命的エラー (トラップ可能)
         (P) 起こるはずのない内部エラー (トラップ可能)
         (X) 重大致命的エラー (トラップ不可能)

     オプショナルな警告は、-w スイッチを使うことで現れます。 ト
     ラップ可能なエラーは、eval 演算子を使うことで、トラップする
     ことができます。 perlfunc manpage の eval の項を参照してく
     ださい。

     いくつかのメッセージは、汎用的なものです。 可変の部分は、ち
     ょうど printf のフォーマットのように %s で表わしています。
     %s! で始まるメッセージもいくつかありますので、注意が必要です。
     "%-?@ といったシンボルは、英字より前に並べられ、[ と \ は、
     後に並べられています。

     "my" variable %s can't be in a package
          (F) 字句スコープの変数は、パッケージ内に置かれませんの
          で、頭にパッケージ名を付けて宣言することは、無意味です。
          パッケージ変数をローカル化したい場合には、local() を使
          ってください。

     "no" not allowed in expression
          (F) "no" キーワードは、コンパイル時に認識され、実行され
          るもので、意味のある値を返しません。 perlmod manpage
          を参照してください。

     "use" not allowed in expression
          (F) "use" キーワードは、コンパイル時に認識され、実行さ
          れるもので、意味のある値を返しません。 perlmod manpage
          を参照してください。

     % may only be used in unpack
         (F) チェックサムを指定して pack を行なうことはできません。
         チェックサム処理では、情報が失われ、どうしようもなくなる
         からです。 perlfunc manpage の unpack の項を参照してく
         ださい。

     %s (...) interpreted as function
         (W) リスト演算子の直後に括弧を置くと、括弧内にあるリスト
         演算子引数を持つ関数になる、という規則が適用されました。
         perlop manpage の「項とリスト演算子 (左方向) 」の節を参
         照してください。



Perl manpages Last change: Release 5.0 Patchlevel 00            1






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     %s argument is not a HASH element
         (F) delete() や exists() の引数は、

             $foo{$bar}
             $ref->[12]->{"susie"}

         のようなハッシュの要素でなければなりません。

     %s did not return a true value
         (F) require (や use) されたファイルは、正常にコンパイル
         され、初期化コードを正しく実行したことを示すために、真を
         返さなければなりません。 こういったファイルは、"1;" で
         終わるようにするのが習慣ですが、真となる値であれば、何で
         もかまいません。 perlfunc manpage の require の項を参照
         してください。

     %s found where operator expected
         (S) Perl の字句解析部は、次に項が来るか、演算子が来るか
         を知っています。 次に演算子が来ると思っているときに、項
         であるとわかるものが現れると、この警告が出ることになりま
         す。 通常、演算子かセミコロンのような区切り文字が省略さ
         れたことをしめします。

     %s had compilation errors.
         (F) perl -c が失敗したときの最終まとめメッセージです。

     %s has too many errors.
         (F) 構文解析部が、プログラム中に 10 個のエラーを見つけた
         ため、それ以上の解析を諦めました。 それ以上のメッセージ
         は、おそらく意味がないでしょう。

     %s matches null string many times
         (W) 指定したパターンは、もし、正規表現エンジンがチェック
         を行なっていなければ、無限ループに陥るものです。 perlre
         manpage を参照してください。

     %s never introduced
         (S) 問題のシンボルは、宣言されましたが、使われる前にスコ
         ープから外れてしまいました。

     %s syntax OK
         (F) perl -c が成功したときの最終まとめメッセージです。

     -P not allowed for setuid/setgid script
         (F) C プリプロセッサがスクリプトをオープンするときには、
         名前でオープンしなければいけませんが、これは、安全性を損
         なう競合条件をもたらします。

     -T and -B not implemented on filehandles
         (F) Perl が、お使いの stdio のことをよく知らないとき、フ
         ァイルハンドルの stdio バッファを覗くことはできません。
         代わりにファイル名を使わなければなりません。



Perl manpages Last change: Release 5.0 Patchlevel 00            2






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     ?+* follows nothing in regexp
         (F) 正規表現を、数量子で始めてしまいました。 その文字自
         体を表現したいのであれば、バックスラッシュを付けてくださ
         い。 perlre manpage を参照してください。

     @ outside of string
         (F) unpack される文字列の外に絶対位置指定している、テン
         プレートを指定しました。 perlfunc manpage の pack の項
         を参照してください。

     accept() on closed fd
         (W) クローズされたソケットに accept を行なおうとしました。
         socket() の呼び出し時に、返却値のチェックを忘れたのでは
         ありませんか。 perlfunc manpage の accept の項を参照し
         てください。

     Allocation too large: %lx
         (F) MS-DOS マシンでは、64K を越えるメモリアロケートをお
         こなえません。

     Arg too short for msgsnd
         (F) msgsnd() に渡す文字列は、少なくとも sizeof(long) の
         長さが必要です。

     Args must match #! line
         (F) setuid エミュレータでは、Perl を起動したときの引数と、
         #! の行で指定された引数はマッチすることが要求されます。

     Argument "%s" isn't numeric
         (W) ここに示した文字列は、数値が必要な演算子の引数として、
         与えられました。 運がよければ、このメッセージによって、
         どの演算子が問題となったかがわかります。

     Array @%s missing the @ in argument %d of %s()
         (D) 本当に古い Perl では、場所によっては、配列名の @ を
         省略できました。 この省略は、止めてください。

     assertion botched: %s
         (P) Perl に付属の malloc ルーティンが内部エラーを起こし
         た。

     Assertion failed: file "%s"
         (P) 一般的なアサーションが失敗しました。 問題の file を
         調べる必要があります。

     Assignment to both a list and a scalar
         (F) 条件演算子へ代入を行なう場合には、2 つめの引数と、3
         つめの引数は、ともにスカラか、ともにリストでなければなり
         ません。 そうでないと、Perl は右辺のコンテキストを決め
         ることができません。





Perl manpages Last change: Release 5.0 Patchlevel 00            3






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Attempt to free non-arena SV: 0x%lx
         (P) すべての SV オブジェクトは、exit 時にガーベジコレク
         ションが行なわれるアリーナに割り当てるようになっています。
         ある SV が、そういったアリーナに入っていないことが、見つ
         かりました。

     Attempt to free temp prematurely
         (W) 消滅する値は、free_tmps() ルーティンで解放されるよう
         になっています。 このメッセージは、free_tmps() ルーティ
         ンの前に何ものかが、SV を解放しようとしていることを示し
         ていて、これは、free_tmps() が解放しようとしたときには、
         どこからも参照されていないスカラを解放することになるとい
         うことです。

     Attempt to free unreferenced glob pointers
         (P) シンボルのエイリアスについて、参照カウントの値がおか
         しな状態になった。

     Attempt to free unreferenced scalar
         (W) Perl がスカラの参照カウントをデクリメントしようとし
         て、0 になるかを見たところ、既に 0 になっていることがわ
         かりました。 これは、既に解放されているべきものであり、
         実際は、おそらく、解放されたものでしょう。 これは、
         SvREFCNT_dec() が必要以上に呼ばれたか、SvREFCNT_inc()
         が必要なときに呼ばれなかったか、SV が消滅すべきで無いと
         きに消滅してしまったか、メモリ異常になったことが考えられ
         ます。

     Bad arg length for %s, is %d, should be %d
         (F) msgctl()、semctl()、shmctl() のいずれかに、間違った
         サイズのバッファを渡してしまいました。 C の言い方で書く
         と、正しいサイズはそれぞれ、sizeof(struct msqid_ds *)、
         sizeof(struct semid_ds *)、sizeof(struct shmid_ds *) で
         す。

     Bad associative array
         (P) 内部ハッシュルーティンで、ヌル HV ポインタを渡された
         ものがあった。

     Bad filehandle: %s
         (F) ファイルハンドルが必要なものに、シンボルを渡しました
         が、そのシンボルは、それに伴うファイルハンドルがありませ
         ん。 おそらく、open() を忘れたか、別のパッケージで open()
         したかでしょう。

     Bad free() ignored
         (S) まず、malloc() されていないものに対して、内部ルーテ
         ィンが free() を呼びました。







Perl manpages Last change: Release 5.0 Patchlevel 00            4






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Bad name after %s::
         (F) パッケージプレフィクスでシンボル名を書き始めましたが、
         そのシンボルが終了しませんでした。 特に、クォートの外で、
         変数展開はできませんから、

             $var = 'myvar';
             $sym = mypack::$var;

         は、

             $var = 'myvar';
             $sym = "mypack::$var";

         と同じではありません。

     Bad symbol for array
         (P) シンボルテーブルエントリではないものに、配列エントリ
         を登録するような内部要求があがった。

     Bad symbol for filehandle
         (P) シンボルテーブルエントリではないものに、ファイルハン
         ドルエントリを登録するような内部要求があがった。

     Bad symbol for hash
         (P) シンボルテーブルエントリではないものに、ハッシュエン
         トリを登録するような内部要求があがった。

     BEGIN failed--compilation aborted
         (F) BEGIN サブルーティンの実行中にトラップ不可能な例外が
         発生しました。 コンパイルは、即座に停止し、インタプリタ
         は中止します。

     bind() on closed fd
         (W) クローズされたソケットに bind を行なおうとしました。
         socket() の呼び出し時に、返却値のチェックを忘れたのでは
         ありませんか。 perlfunc manpage の bind の項を参照して
         ください。

     Callback called exit
         (F) 外部パッケージから perl_call_sv() で起動されたサブル
         ーティンが exit を呼んで終了しました。

     Can't "last" outside a block
         (F) 現在のブロックから脱出するために、"last" 文を実行し
         ましたが、残念なことにブロックの中ではありませんでした。
         "if" や "else" のブロックは、「ループ風」ブロックではな
         いので、勘違いしないでください。 ただし、中括弧を二重に
         すれば、内側の中括弧が、1 度だけループするブロックとみな
         されますから、同じ効果が得られます。 perlfunc manpage
         の last の項を参照してください。





Perl manpages Last change: Release 5.0 Patchlevel 00            5






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't "next" outside a block
         (F) 現在のブロックの繰り返しを進めるために、"next" 文を
         実行しましたが、ブロックの中ではありませんでした。 "if"
         や "else" のブロックは、「ループ風」ブロックではないので、
         勘違いしないでください。 ただし、中括弧を二重にすれば、
         内側の中括弧が、1 度だけループするブロックとみなされます
         から、同じ効果が得られます。 perlfunc manpage の next
         の項を参照してください。

     Can't "redo" outside a block
         (F) 現在のブロックの繰り返しをもう一度行なうために、
         "redo" 文を実行しましたが、ブロックの中ではありませんで
         した。 "if" や "else" のブロックは、「ループ風」ブロッ
         クではないので、勘違いしないでください。 ただし、中括弧
         を二重にすれば、内側の中括弧が、1 度だけループするブロッ
         クとみなされますから、同じ効果が得られます。 perlfunc
         manpage の redo の項を参照してください。

     Can't bless non-reference value
         (F) ハードリファレンスのみが bless できます。 これによ
         って、Perl はオブジェクトのカプセル化を「強制」します。
         perlobj manpage を参照してください。

     Can't break at that line
         (S) デバッガで実行中に出力される警告で、指定された行番号
         は、停止可能な実行文の場所ではないことを示しています。

     Can't call method "%s" in empty package "%s"
         (F) 正しくメソッドを呼び出し、それは、クラスとして機能す
         るパッケージを正しく示していますが、そのパッケージには、
         何も定義されておらず、メソッドだけになっています。
         perlobj manpage を参照してください。

     Can't call method "%s" on unblessed reference
         (F) メソッド呼び出しは、自分が呼び出されたパッケージがど
         れであるかを知る必要があります。 普通は、渡したオブジェ
         クトリファレンスからその情報を受け取りますが、この場合に
         はオブジェクトリファレンスが渡されませんでした。 リファ
         レンスは、bless されて始めて、オブジェクトリファレンスと
         なります。 perlobj manpage を参照してください。

     Can't call method "%s" without a package or object reference
         (F) メソッド呼び出しの構文を用いましたが、オブジェクトリ
         ファレンス、もしくはパッケージ名が書かれるべき場所に、オ
         ブジェクトリファレンスもパッケージ名も返さない式が書かれ
         ています。 (おそらく、何も書いてないかもしれません。)
         以下のようなものは、エラーとなります:

             $BADREF = undef;
             process $BADREF 1,2,3;
             $BADREF->process(1,2,3);




Perl manpages Last change: Release 5.0 Patchlevel 00            6






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't chdir to %s
         (F) perl -x/foo/bar のようにして起動したが、/foo/bar に
         chdir することができません。 おそらく、存在しないのでは、
         ないでしょうか。

     Can't coerce %s to integer in %s
         (F) ある種の SV、特に本物のシンボルテーブルエントリ (型
         グロブ) は、1 つの型に留めておくことができません。 した
         がって、

             *foo += 1;

         とすることはできません。

             $foo = *foo;
             $foo += 1;

         とすることはできますが、$foo にはもはやグロブは残ってい
         ません。

     Can't coerce %s to number in %s
         (F) ある種の SV、特に本物のシンボルテーブルエントリ (型
         グロブ) は、1 つの型に留めておくことができません。

     Can't coerce %s to string in %s
         (F) ある種の SV、特に本物のシンボルテーブルエントリ (型
         グロブ) は、1 つの型に留めておくことができません。

     Can't create pipe mailbox
         (F) VMS 特有のエラーです。

     Can't declare %s in my
         (F) スカラ変数、配列変数、ハッシュ変数だけが、字句スコー
         プの変数として宣言できます。 これらは、名前として通常の
         識別子を持たなければなりません。

     Can't do inplace edit on %s: %s
         (S) 表示された理由により、新しいファイルの生成に失敗しま
         した。

     Can't do inplace edit without backup
         (F) 削除した (が、まだオープンされている) ファイルを読も
         うとするとおかしくなる MS-DOS のようなシステムで実行して
         います。 -i.bak のようにバックアップを指定してください。

     Can't do inplace edit: %s > 14 characters
         (S) そのファイルのバックアップ名を作ると、ファイル名の長
         さの制限をオーバしてしまいます。

     Can't do inplace edit: %s is not a regular file
         (S) /dev や FIFO のような、特殊ファイルに対して、-i スイ
         ッチを使おうとしました。 そのファイルは、無視されました。



Perl manpages Last change: Release 5.0 Patchlevel 00            7






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't do setegid!
         (P) suidperl の setuid エミュレータで何らかの理由により、
         setegid() 呼び出しが失敗しました。

     Can't do seteuid!
         (P) suidperl の setuid エミュレータが何らかの理由によっ
         て失敗しました。

     Can't do setuid
         (F) このエラーは、通常、普通の perl が setuid エミュレー
         ションのために suidperl を実行しようとしましたが、実行で
         きなかったことを意味します。 特に UNIX マシンの
         /usr/local/bin などでは、perl の実行ファイルが、perl5.000
         という名前のときには、同じディレクトリで sperl5.000 とい
         う形式の名前を探します。 もし、ファイルが存在していれば、
         実行パーミッションをチェックしてください。 許可されてい
         ないようであれば、システム管理者の方に、わけを尋ねてみて
         ください。

     Can't do waitpid with flags
         (F) このマシンには、waitpid() も wait4() もありませんの
         で、フラグの無い waitpid() のみがエミュレート可能です。

     Can't do {n,m} with n > m
         (F) 最小値は最大値以下でなければなりません。 もし、本当
         に正規表現が 0 回繰り返したものにマッチさせたいなら、単
         に {0} としてください。 perlre manpage を参照してくださ
         い。

     Can't emulate -%s on #! line
         (F) #! 行にその時点で意味をなさないスイッチが指定されま
         した。 たとえば、#! 行に -x をおいても意味がありません。

     Can't exec "%s": %s
         (W) 提示した理由によって、system() や exec() やパイプオ
         ープン呼び出しの指定されたプログラムが実行できませんでし
         た。 考えられる理由には: ファイルのパーミッションが間違
         っている、ファイルが $ENV{PATH} の中にない、問題の実行フ
         ァイルがこのマシン用ではない、スクリプトの #! 行が同じよ
         うな理由で実行できないインタプリタを指している、というよ
         うなものがあります。 (あるいは、このシステムで、#! がサ
         ポートされていなません。)

     Can't exec %s
         (F) #! 行に書かれた内容にしたがって、Perl は示されたプロ
         グラムを実行しようとしました。 そうしたくないのであれば、
         #! 行のどこかに、"perl" と書いておいてください。

     Can't execute %s
         (F) -S スイッチを使いましたが、実行するスクリプトが PATH
         の中に見つかりませんでした。 少なくとも、正しいパーミッ
         ションではないと思われます。



Perl manpages Last change: Release 5.0 Patchlevel 00            8






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't find label %s
         (F) どこにも見つからないラベルへ goto を行なおうとしまし
         た。 perlfunc manpage の goto の項を参照してください。

     Can't find string terminator %s anywhere before EOF
         (F) Perl の文字列は、複数行に渡ることができます。 この
         メッセージは、文字列を終わる区切り文字が見つからなかった
         ことを意味します。 括弧類の区切り文字では、ネストを数え
         るので、

             print q(The character '(' starts a side comment.)

         では、最後の括弧が無いと言われます。

     Can't fork
         (F) パイプラインをオープンしようとして、fork を行なおう
         として、致命的エラーが発生しました。

     Can't get pipe mailbox device name
         (F) VMS 特有のエラーです。

     Can't get SYSGEN parameter value for MAXBUF
         (F) VMS 特有のエラーです。

     Can't goto subroutine outside a subroutine
         (F) 結構マジカルな "goto subroutine" の呼び出しは、ある
         サブルーティン呼び出しを別のもので置き換えるだけです。
         反物の状態から作り上げることはできません。 一般に、これ
         を行なうのは、AUTOLOAD ルーティンから抜け出すときだけに
         しておくべきです。 perlfunc manpage の goto の項を参照
         してください。

     Can't locate %s in @INC
         (F) ファイルを do (または、requireuse) するように指示
         されましたが、@INC で示されるライブラリの中に見つかりま
         せんでした。 おそらく、追加ライブラリの場所を示すために、
         PERL5LIB 環境変数を指定する必要があるか、スクリプトの中
         で @INC にライブラリ名を追加する必要があります。 ファイ
         ル名のスペルミスの可能性もあります。 perlfunc manpage
         の require の項を参照してください。

     Can't locate object method "%s" via package "%s"
         (F) 正しくメソッドを呼び出し、それは、クラスとして機能す
         るパッケージを正しく示していますが、そのパッケージにも、
         基底クラスにも、該当のメソッドが定義されていません。
         perlobj manpage を参照してください。

     Can't locate package %s for @%s::ISA
         (W) 配列 @ISA に別のパッケージ名が記されていますが、存在
         していないようです。





Perl manpages Last change: Release 5.0 Patchlevel 00            9






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't mktemp()
         (F) -e スイッチを処理しようとして、何らかの理由により、
         mktemp() ルーティンがうまく行きませんでした。 /tmp パー
         ティションがいっぱいか、壊れている可能性があります。

     Can't modify %s in %s
         (F) 指定されたものは、代入、インクリメントなど、変更が許
         されていません。

     Can't modify non-existent substring
         (P) substr() への代入を行なう内部ルーティンに NULL が渡
         されました。

     Can't msgrcv to readonly var
         (F) msgrcv で使用する変数は、受信バッファとして使用しま
         すので、変更可能なものでなければなりません。

     Can't open %s: %s
         (S) 置き換え編集で、表示した理由によって、元のファイルが
         オープンできませんでした。 通常、これはそのファイルのリ
         ード権が無いときに起こります。

     Can't open bidirectional pipe
         (W) サポートされていない open(CMD, "|cmd|") を行なおうと
         しました。 これを行なうためには、Perl ライブラリの
         "open2.pl" のようないくつかのモジュールを使うことができ
         ます。 別の方法として、パイプされたものを ">" を使って
         いったんファイルに出力し、あとで別のファイルハンドルで読
         み込みを行なうことも考えられます。

     Can't open perl script "%s": %s
         (F) 指定したスクリプトが、表示した理由によってオープンで
         きませんでした。

     Can't rename %s to %s: %s, skipping file
         (S) -i スイッチで行なわれた rename が何らかの理由によっ
         て、うまく行きませんでした。 ディレクトリに書き込み権が
         ないことも考えられます。

     Can't reswap uid and euid
         (P) suidperl の setuid エミュレータで何らかの理由により、
         setreuid() 呼び出しが失敗しました。

     Can't return outside a subroutine
         (F) return 文が、return で抜けるべきサブルーティンがない、
         "main" コードで実行されました。 perlsub manpage を参照
         してください。

     Can't stat script "%s"
         (P) 何らかの理由で、例え既にオープンしていたとしても、
         fstat() が行なえません。 困ったもんだ。




Perl manpages Last change: Release 5.0 Patchlevel 00           10






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't swap uid and euid
         (P) suidperl の setuid エミュレータで何らかの理由により、
         setreuid() 呼び出しが失敗しました。

     Can't take log of %g
         (F) 対数は、正の実数に対してのみ定義されています。

     Can't take sqrt of %g
         (F) 通常の実数では、負数の平方根をとることはできません。
         しかし、本当にその計算を行ないたいのであれば、Complex パ
         ッケージが Perl に用意されています。

     Can't undef active subroutine
         (F) 実行中のルーティンを未定義にすることはできません。
         しかし、実行中に再定義することはでき、古いルーティンを実
         行中に、再定義したサブルーティンを undef することさえで
         きます。 Go figure。

     Can't unshift
         (F) Perl のメインスタックのように、unshift することので
         きない「実在しない」配列に対して、unshift を行なおうとし
         ました。

     Can't upgrade that kind of scalar
         (P) 内部の sv_upgrade ルーティンは、SV に「メンバ」を加
         えて、より特別な種類の SV にします。 しかし、上位のいく
         つかの SV 型は、特殊化され過ぎて、内部変換することができ
         ません。 このメッセージは、そのような変更を行なおうとし
         たことを示しています。

     Can't upgrade to undef
         (P) 未定義 SV は、upgrade の仕組みにおいて、階層構造の最
         下位に位置するものです。 undef への upgrade は、
         sv_upgrade を呼ぶコードのエラーを示します。

     Can't use %s as left arg of an implicit ->
         (F) コンパイラが、配列リファレンスへの添え字として、大括
         弧で括った式を解釈しようとしました。 大括弧の左が、アロ
         ー (->) で終わっていない式であったり、添え字付けされた式
         になっています。 複数の添え字を持つ、添え字付けされた式
         だけが、間のアローを省略できます。

     Can't use %s for loop variable
         (F) 単純スカラ変数だけが、foreach のループ変数として使用
         することができます。

     Can't use %s ref as %s ref
         (F) リファレンス型を混同しています。 必要な型のリファレ
         ンスを被参照しなければなりません。 必要ならば、リファレ
         ンスの型を調べるのに、ref() 関数を使うことができます。





Perl manpages Last change: Release 5.0 Patchlevel 00           11






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Can't use a string as %s ref while "strict refs" in use
         (F) "strict refs" では、ハードリファレンスだけが許されま
         す。 シンボリックリファレンスは、許されていません。
         perlref manpage を参照してください。

     Can't use an undefined value as %s reference
         (F) ハードリファレンスやシンボリックリファレンスとして使
         用する値は、定義済みの値でなければなりません。 潜伏中の
         エラーを引きずり出す助けとなります。

     Can't use delimiter brackets within expression
         (F) ${name} という用法は、文字列で識別子の曖昧さを取り除
         くためのもので、通常のコードの中では使えません。

     Can't use global %s in "my"
         (F) マジカル変数を、字句スコープ変数として宣言しようとし
         ました。 これが許されていないのは、マジック変数は 1 か
         所だけにおくことができる (つまりグローバル変数) からであ
         り、マジカル変数に見えながら、そうでないものがプログラム
         中に現われると混乱の元となるためです。

     Can't write to temp file for -e: %s
         (F) -e スイッチを処理しようとして、何らかの理由により、
         書き込みルーティンがうまく行きませんでした。 /tmp パー
         ティションがいっぱいか、壊れている可能性があります。

     Can't x= to readonly value
         (F) 定数値 (未定義値であることが多い) を、自らを書き換え
         ることを意味する、代入演算子で繰り返しを行なおうとしまし
         た。 テンポラリ変数に値を移してから、繰り返すと良いでし
         ょう。

     Cannot open temporary file
         (F) -e スイッチを処理しようとして、何らかの理由により、
         ファイル生成ルーティンがうまく行きませんでした。 /tmp
         パーティションがいっぱいか、壊れている可能性があります。

     chmod: mode argument is missing initial 0
         (W) 初心者の方は、

             chmod 777, $filename

         というふうに、777 が 01411 に等しい 10 進数であることに
         気付かないで使うことがあります。 Perl では、8 進数の定
         数は、C と同じように、先頭に 0 を付けて表わします。

     Close on unopened file <%s>
         (W) オープンされていないファイルハンドルをクローズしよう
         としました。






Perl manpages Last change: Release 5.0 Patchlevel 00           12






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     connect() on closed fd
         (W) クローズされたソケットに connent を行なおうとしまし
         た。 socket() の呼び出し時に、返却値のチェックを忘れた
         たのではありませんか。 perlfunc manpage の connect の項
         を参照してください。

     Corrupt malloc ptr 0x%lx at 0x%lx
         (P) Perl に付属の malloc ルーティンが内部エラーを起こし
         た。

     corrupted regexp pointers
         (P) 正規表現コンパイラが渡したもので、正規表現エンジンが
         処理できなくなった。

     corrupted regexp program
         (P) 正規表現エンジンが、有効なマジックナンバーを持たない
         regexp プログラムを渡しました。

     Deep recursion on subroutine "%s"
         (W) このサブルーティンは、(直接、間接に) 自分自身の呼び
         出しを、return より 100 回多く行ないました。 変わったベ
         ンチマークプログラムを書いているのでなければ、無限再帰の
         可能性があります。 ベンチマークを書いている場合には、別
         のことを示しています。

     Did you mean $ instead of %?
         (W) $hash{$key} のつもりで %hash{$key} と書いたと思われ
         ます。

     Don't know how to handle magic of type '%s'
         (P) マジック変数の内部処理がおかしくなっています。

     do_study: out of memory
         (P) これは、本来 safemalloc() で、引っ掛かるはずのもので
         す。

     Duplicate free() ignored
         (S) 既に解放されているものに対して、内部ルーティンが、
         free() を行なおうとしました。

     END failed--cleanup aborted
         (F) END サブルーティンを実行中に、トラップできない例外が
         発生しました。 インタプリタは、即座に実行を中止します。

     Execution of %s aborted due to compilation errors.
         (F) Perl のコンパイルが失敗したときの、最後のまとめメッ
         セージです。

     Exiting eval via %s
         (W) goto やループ制御文など、おかしな方法で eval を抜け
         ました。




Perl manpages Last change: Release 5.0 Patchlevel 00           13






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Exiting subroutine via %s
         (W) goto やループ制御文など、おかしな方法でサブルーティ
         ンを抜けました。

     Exiting substitution via %s
         (W) returngoto やループ制御文など、おかしな方法で置
         換を抜けました。

     Fatal $PUTMSG error: %d
         (F) VMS 特有のエラーです。

     fcntl is not implemented
         (F) このマシんでは、fcntl() がインプリメントされていない
         ように見えます。 PDP-11 か何かでしょうか。

     Filehandle %s never opened
         (W) 初期化していないファイルハンドルに対して、I/O 操作を
         行なおうとしました。 open() や socket()、FileHandle パ
         ッケージのコンストラクタを呼び出す必要があります。

     Filehandle %s opened only for input
         (W) リードオンリーのファイルハンドルに対して、書込みを行
         なおうとしました。 読み書き両用ファイルハンドルにしたい
         のであれば、"<" を付けたり、何も付けなかったりするのでは
         なく、"+<" や "+>" や "+>>" を付けて open する必要があり
         ます。 ライトオンリーであれば、">" や ">>" を使ってくだ
         さい。 perlfunc manpage の open の項を参照してください。

     Filehandle only opened for input
         (W) リードオンリーのファイルハンドルに対して、書込みを行
         なおうとしました。 読み書き両用ファイルハンドルにしたい
         のであれば、"<" を付けたり、何も付けなかったりするのでは
         なく、"+<" や "+>" や "+>>" を付けて open する必要があり
         ます。 ライトオンリーであれば、">" や ">>" を使ってくだ
         さい。 perlfunc manpage の open の項を参照してください。

     Final $ should be \$ or $name
         (F) 文字列の最後の $ が、リテラルのドル記号なのか、変数
         名を入れようとして忘れたのかを、はっきりさせなければなり
         ません。 バックスラッシュを付けるか、名前を入れてくださ
         い。

     Final @ should be \@ or @name
         (F) 文字列の最後の @ が、リテラルのアットマークなのか、変
         数名を入れようとして忘れたのかを、はっきりさせなければな
         りません。 バックスラッシュを付けるか、名前を入れてくだ
         さい。








Perl manpages Last change: Release 5.0 Patchlevel 00           14






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Format %s redefined
         (W) フォーマットを再定義しました。 この警告を止めるには、

             {
                 local $^W = 0;
                 eval "format NAME =...";
             }

         としてください。

     Format not terminated
         (F) フォーマットは、単独のドットだけからなる行で終わらな
         ければなりません。 そのような行が見つからないまま、スク
         リプトの最後に行き当たってしまいました。

     Found = in conditional, should be ==
         (W) おそらく、

             if ($foo == 123)

         とすべきところを

             if ($foo = 123)

         としています (あるいは似たようなこと)。

     gdbm store returned %d, errno %d, key "%s"
         (S) GDBM_File 拡張モジュールが、値の設定に失敗したという
         警告です。

     gethostent not implemented
         (F) C ライブラリに gethostent() がインプリメントされてい
         ないようです。 おそらく、インプリメントすると Internet
         上のすべてのホスト名を返さなければいけないと思っているの
         でしょう。

     get{sock,peer}name() on closed fd
         (W) クローズされたソケットに、get{sock,peer}name() を行
         なおうとしました。 socket() の呼び出し時に、返却値のチ
         ェックを忘れたのではありませんか。

     Glob not terminated
         (F) 項が必要とされるところで、開き山括弧が見つけたため、
         対応する閉じ山括弧を探しましたが、見つかりませんでした。
         可能性としては、必要な括弧を省いてしまい、本当は、「小な
         り記号」を表したかった場合が考えられます。

     Global symbol "%s" requires explicit package name
         (F) "use strict vars" が指定されていますので、すべての変
         数は、("my" を使った) 字句スコープの変数か、グローバル変
         数がどのパッケージのものかを ("::" を使って)、明示的に修
         飾しなくてはなりません。



Perl manpages Last change: Release 5.0 Patchlevel 00           15






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     goto must have label
         (F) "next" や "last" とは違って、goto には必ず、飛び先を
         指定しなくてはなりません。 perlfunc manpage の goto の
         項を参照してください。

     Had to create %s unexpectedly
         (S) あるルーティンが、既に存在しているはずのシンボルを、
         シンボルテーブルで探しましたが、何らかの理由で存在せず、
         コアダンプを避けるために、緊急に生成しました。

     Hash %%s missing the % in argument %d of %s()
         (D) 古い Perl では、ハッシュ名の % を省略できる場所があ
         りました。 省略はしないようにしてください。

     Identifier "%s::%s" used only once: possible typo
         (W) タイプミスは、多くの場合に、その識別子が 1 度しか現
         れないことで発覚します。 何か理由があって、その識別子を
         1 度しか使っていないのであれば、単にどこかでその識別子を
         書いておくだけでこのメッセージは止められます。

     Illegal division by zero
         (F) ゼロで割り算をしようとしました。 ロジックの誤りか、
         意味の無い入力を防ぐために、条件を付けることが必要かのど
         ちらかでしょう。

     Illegal modulus zero
         (F) 余りを求めるのに、ゼロで割り算をしようとしました。
         これは、ほとんどの数体系で受け入れられません。

     Illegal octal digit
         (F) 8 進数で 8 か 9 を使いました。

     Insecure dependency in %s
         (F) 何か汚染チェックの機構が、望ましくないと判断すること
         を行なおうとしました。 setuid や setgid を実行したとき
         や、明示的に -T で指定したときに、汚染チェック機構が働き
         ます。 汚染チェック機構は、信頼がおけないと仮定されるユ
         ーザが直接、間接を問わず、指定したデータに印を付けます。
         そのようなデータを「危険な」操作に用いると、このエラーが
         発生します。 詳しくは、perlsec manpage を参照してくださ
         い。

     Insecure directory in %s
         (F) $ENV{PATH} の中に、誰にでも書き込みができるディレク
         トリが含まれているとき、system()、exec()、パイプのオープ
         ンを行なうことはできません。 perlsec manpage を参照して
         ください。








Perl manpages Last change: Release 5.0 Patchlevel 00           16






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Insecure PATH
         (F) $ENV{PATH} の中に、ユーザが指定した (あるいはその可
         能性がある) データから作られたものが含まれるとき、
         system()、exec()、パイプのオープンを行なうことはできませ
         ん。 スクリプト内で、信頼できるデータに基づいて、パスに
         既知の値を設定しなければなりません。 perlsec manpage を
         参照してください。

     internal disaster in regexp
         (P) 正規表現解析部に何か悪いことが起こりました。

     internal urp in regexp at /%s/
         (P) 正規表現解析部に何か間違ったことが起こりました。

     invalid [] range in regexp
         (F) 文字クラスに指定した範囲の最小値が、最大値よりも大き
         くなっています。 perlre manpage を参照してください。

     ioctl is not implemented
         (F) C をサポートしているマシンではおかしなことだと思いま
         すが、このマシンでは ioctl() がインプリメントされていな
         いようです。

     junk on end of regexp
         (P) 正規表現の構文解析ができなくなった。

     Label not found for "last %s"
         (F) 脱出するループを指定しましたが、その名前のループの中
         にいません、たとえ、呼び出された場所がそうであっても、今
         はそうではありません。 perlfunc manpage の last の項を
         参照してください。

     Label not found for "next %s"
         (F) 次の繰り返しを行なうループを指定しましたが、その名前
         のループの中にいません。 たとえ、呼び出された場所がそう
         であっても、今はそうではありません。 perlfunc manpage
         の next の項を参照してください。

     Label not found for "redo %s"
         (F) 繰り返しの再実行を行なうループを指定しましたが、その
         名前のループの中にいません。 たとえ、呼び出された場所が
         そうであっても、今はそうではありません。 perlfunc
         manpage の redo の項を参照してください。

     listen() on closed fd
         (W) クローズされたソケットに listen を行なおうとしました。
         socket() の呼び出し時に、返却値のチェックを忘れたのでは
         ありませんか。 perlfunc manpage の listen の項を参照し
         てください。






Perl manpages Last change: Release 5.0 Patchlevel 00           17






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Literal @%s now requires backslash
         (F) Perl は、配列を展開したいのか、リテラルの @ を使いた
         いのかを推察するようにしていました。 これは、実行時に文
         字列が最初に使われたときに、行なわれました。 現在、文字
         列はコンパイル時に解析され、曖昧な @ は、リテラルである
         ことを示すためにバックスラッシュを付けるか、プログラム内
         で (字面の上で) 文字列よりも前に、宣言 (あるいは、使用)
         することによって、配列であることを示さなければなりません。
         (そのうちに、バックスラッシュのない @ は、単純に配列と解
         釈するようになります。)

     Method for operation %s not found in package %s during blessing
         (F) 多重定義テーブルで、有効なメソッドを指していないエン
         トリを指定しようとしました。 perlovl manpage を参照して
         ください。

     Might be a runaway multi-line %s string starting on line %d
         (S) ようやく現在行になって、文字列やパターンの終わりが見
         つかったことから、先のエラーが、文字列やパターンのデリミ
         タが、見つからなかったことで起ったかもしれないことを、補
         足的に示しています。

     Misplaced _ in number
         (W) 十進数定数で下線が、3 桁ごとでありませんでした。

     Missing $ on loop variable
         (F) csh を使いすぎた症状が現れているようです。 Perl で
         は、変数は常に $ を付けて表わされます。 その時によって
         違う、シェルとは違っています。

     Missing comma after first argument to %s function
         (F) ある種の関数では、引数リストの前に、ファイルハンドル
         や「間接オブジェクト」をおくことができますが、この関数は、
         そういったものではありません。

     Missing right bracket
         (F) 字句解析部が、閉じ中括弧よりも開き中括弧を多く発見し
         ました。 一般的な規則として、最後に修正した場所の近くに
         間違いがあるといえます。

     Missing semicolon on previous line?
         (S) このメッセージは、"%s found where operator expected"
         というメッセージに伴って出される経験的な想像によるもので
         す。 このメッセージが出たからといって、機械的に前の行に
         セミコロンを付けることはしないでください。










Perl manpages Last change: Release 5.0 Patchlevel 00           18






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Modification of a read-only value attempted
         (F) 直接、間接に関らず、定数値を変更しようとしました。
         もちろん、コンパイラが発見できる、"2 = 1" などといったこ
         とをしたわけではありません。 しかし、同じことは、

             sub mod { $_[0] = 1 }
             mod(2);

         としても起こります。 substr() で、文字列の終わりよりも
         後ろに代入を行なうことでも起こります。

     Modification of non-creatable array value attempted, subscript %d
         (F) 配列値を存在するようにしようとしました。 おそらく、
         インデクスが負数で、配列の終わりから逆に数えたとしても、
         おかしな位置を指しているようです。

     Modification of non-creatable hash value attempted, subscript "%s"
         (F) ハッシュ値を存在するようにしようとしましたが、何か特
         別な理由で、できませんでした。

     Module name must be constant
         (F) "use" の最初の引数としてモジュール名を示すのに許され
         ているのは、裸の単語だけです。

     msg%s not implemented
         (F) このシステムでは、System V メッセージ IPC は使えませ
         ん。

     Multidimensional syntax %s not supported
         (W) 多次元配列は、$foo[1,2,3] のようには書けません。 こ
         れは、C のように $foo[1][2][3] のように書きます。

     Negative length
         (F) ゼロより短い長さのバッファで、読み込み、書き込み、送
         信、受信を行なおうとしました。 どのようなことがしたいの
         か判断できません。

     nested *?+ in regexp
         (F) 括弧を挟まないで、数量子を数量子で修飾することはでき
         ません。 つまり、** や +* や ?* といったものは、正しく
         ありません。

         しかし、最短一致数量子の *?、+?、?? は、ネストした数量子
         のように見えますが、そうではありません。 perlre manpage
         を参照してください。

     No #! line
         (F) setuid エミュレータでは、たとえマシンがサポートして
         いなくても、完全な形の #! 行がスクリプトに書かれていなけ
         ればなりません。





Perl manpages Last change: Release 5.0 Patchlevel 00           19






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     No %s allowed while running setuid
         (F) ある種の操作は、setuid や setgid スクリプトにとって、
         やってみることはできても、とても安全なものとは考えられな
         いものです。 一般に言って、安全ではなくても、安全にしう
         る、別の方法があるはずです。 perlsec manpage を参照して
         ください。

     No -e allowed in setuid scripts
         (F) setuid スクリプトは、ユーザによって指定することはで
         きません。

     No comma allowed after %s
         (F) ファイルハンドルや「間接オブジェクト」を伴うリスト演
         算子では、それらとそれ以降の引数の間にコンマを入れること
         はできません。 そのようにした場合には、引数の一つとなっ
         てしまいます。

     No DB::DB routine defined
         (F) 現在実行中のコードは、-d スイッチを付けてコンパイル
         されましたが、何らかの理由により、perl5db.pl (あるいは、
         その複製) が各実行文の頭で呼び出すルーティンを定義してい
         ません。 そのファイルは自動的に require されるものであ
         り、正しく解釈できなければ、require が失敗するはずですの
         で、これはとても有り得ない状態です。

     No dbm on this machine
         (P) これは、内部エラーとして扱われます。 Perl に SDBM
         が付いてくるので、どのマシンでも dbm が使えるはずだから
         です。 SDBM_File manpage を参照してください。

     No DBsub routine
         (F) 現在実行中のコードは、-d スイッチを付けてコンパイル
         されましたが、何らかの理由により、perl5db.pl (あるいは、
         その複製) が各サブルーティン呼び出しの頭で呼び出す
         DB::sub ルーティンを定義していませんでした。

     No Perl script found in input
         (F) perl -x を呼び出しましたが、そのファイルに #! で始ま
         り、"perl" という語を含む行が見つかりませんでした。

     No setregid available
         (F) Configure が、システム上に setregid() のような関数を
         見つけられませんでした。

     No setreuid available
         (F) Configure が、システム上に setreuid() のような関数を
         見つけられませんでした。

     No space allowed after -I
         (F) -I の引数は、-I の直後にスペースを空けないで書く必要
         があります。




Perl manpages Last change: Release 5.0 Patchlevel 00           20






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     No such signal: SIG%s
         (W) %SIG の添え字として認識できないシグナル名を指定しま
         した。 お使いのシステムで使用可能なシグナル名を調べるに
         は、シェル上で kill -l などとしてください。

     Not a CODE reference
         (F) Perl がコード値 (サブルーティン) へのリファレンスを
         評価しようとしましたが、別のものへのリファレンスでした。
         実際にどんな種類のリファレンスかを調べるには、ref() 関数
         を使うことができます。 perlref manpage も参照してくださ
         い。

     Not a format reference
         (F) どのように無名のフォーマットへのリファレンスを生成し
         たのかはわかりませんが、このメッセージは、それが指定され
         て、存在しなかったことを示します。

     Not a GLOB reference
         (F) Perl が「型グロブ」(これは、*foo のようなシンボルテ
         ーブルエントリです) へのリファレンスを評価しようとしまし
         たが、別のものへのリファレンスでした。 実際にどんな種類
         のリファレンスかを調べるには、ref() 関数を使うことができ
         ます。 perlref manpage を参照してください。

     Not a HASH reference
         (F) Perl がハッシュ値へのリファレンスを評価しようとしま
         したが、別のものへのリファレンスでした。 実際にどんな種
         類のリファレンスかを調べるには、ref() 関数を使うことがで
         きます。 perlref manpage を参照してください。

     Not a perl script
         (F) setuid エミュレータでは、たとえマシンがサポートして
         いなくても、完全な形の #! 行がスクリプトに書かれていなけ
         ればなりません。 この行で指定されるのは、perl でなけれ
         ばなりません。

     Not a SCALAR reference
         (F) Perl がスカラ値へのリファレンスを評価しようとしまし
         たが、別のものへのリファレンスでした。 実際にどんな種類
         のリファレンスかを調べるには、ref() 関数を使うことができ
         ます。 perlref manpage を参照してください。

     Not a subroutine reference
         (F) Perl がコード値 (サブルーティン) へのリファレンスを
         評価しようとしましたが、別のものへのリファレンスでした。
         実際にどんな種類のリファレンスかを調べるには、ref() 関数
         を使うことができます。 perlref manpage も参照してくださ
         い。







Perl manpages Last change: Release 5.0 Patchlevel 00           21






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Not a subroutine reference in %OVERLOAD
         (F) 多重定義テーブルで、有効なサブルーティンを指していな
         いエントリを指定しようとしました。 perlovl manpage を参
         照してください。

     Not an ARRAY reference
         (F) Perl が配列値へのリファレンスを評価しようとしました
         が、別のものへのリファレンスでした。 実際にどんな種類の
         リファレンスかを調べるには、ref() 関数を使うことができま
         す。 perlref manpage を参照してください。

     Not enough arguments for %s
         (F) この関数は、指定したよりも多くの引数を必要とします。

     Not enough format arguments
         (W) 指定したフォーマットに、次の行で指定したより多くのピ
         クチャフィールドがあります。 perlform manpage を参照し
         てください。

     Null filename used
         (F) 特に、多くのマシンでカレントディレクトリを意味するた
         め、空のファイル名は require できません。 perlfunc
         manpage の require の項を参照してください。

     NULL OP IN RUN
         (P) 内部ルーティンで、ヌル opcode ポインタで run() を呼
         んだものがあります。

     Null realloc
         (P) realloc NULL を行なおうとしました。

     NULL regexp argument
         (P) 内部パターンマッチルーティンが、大当たりです。

     NULL regexp parameter
         (P) 内部パターンマッチルーティンが、狂っています。

     Odd number of elements in hash list
         (S) ハッシュリストへの要素の数が奇数でした。 ハッシュリ
         ストは、key/value のペアで与えられますから、これは奇妙な
         ことです。

     oops: oopsAV
         (S) 文法がおかしくなったことを示す内部警告です。

     oops: oopsHV
         (S) 文法がおかしくなったことを示す内部警告です。

     Operation `%s' %s: no method found,
         (F) 多重定義テーブルで、もはや有効なメソッドを指していな
         いエントリを使おうとしました。 perlovl manpage を参照し
         てください。



Perl manpages Last change: Release 5.0 Patchlevel 00           22






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Out of memory for yacc stack
         (F) yacc パーサーが解析を続けるために、スタックを広げよ
         うとしましたが、realloc() が仮想やその他のメモリを確保で
         きませんでした。

     Out of memory!
         (X) 要求を満たすだけの、十分な残メモリ (または、仮想メモ
         リ) が取得できないことを示す、0 を malloc() 関数が返しま
         した。

     page overflow
         (W) write() の 1 度の呼び出しで、1 ページに収まるより多
         くの行ができました。 perlform manpage を参照してくださ
         い。

     panic: ck_grep
         (P) grep をコンパイルしようとして、内部の一貫性チェック
         に引っ掛かりました。

     panic: ck_split
         (P) split をコンパイルしようとして、内部の一貫性チェック
         に引っ掛かりました。

     panic: corrupt saved stack index
         (P) セーブスタックにある以上のローカル化した値を元に戻す
         要求がありました。

     panic: die %s
         (P) eval コンテキストへコンテキストスタックをポップした
         あと、eval コンテキストでないことがわかりました。

     panic: do_match
         (P) 内部の pp_match() ルーティンが、無効な省略可能データ
         を付けて呼ばれました。

     panic: do_split
         (P) split の準備中に何かまずいことが起こってしまいました。

     panic: do_subst
         (P) 内部の pp_subst() ルーティンが、無効な省略可能データ
         を付けて呼ばれました。

     panic: do_trans
         (P) 内部の pp_trans() ルーティンが、無効な省略可能データ
         を付けて呼ばれました。

     panic: goto
         (P) 指定したラベルを伴うコンテキストへコンテキストスタッ
         クをポップしたあと、どのように goto するかがわかっている
         コンテキストでないことがわかりました。





Perl manpages Last change: Release 5.0 Patchlevel 00           23






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     panic: INTERPCASEMOD
         (P) 大文字小文字修飾子のところで、字句解析部がおかしな状
         態に陥りました。

     panic: INTERPCONCAT
         (P) 中括弧を伴う文字列を解析中に、字句解析部がおかしな状
         態に陥りました。

     panic: last
         (P) block コンテキストへコンテキストスタックをポップした
         あと、block コンテキストでないことがわかりました。

     panic: leave_scope clearsv
         (P) 書き込み可能な字句スコープ変数が、どういうわけか、ス
         コープ内でリードオンリーになりました。

     panic: leave_scope inconsistency
         (P) おそらく、セーブスタックの同期がとれていません。 少
         なくとも、トップに不正な enum がありました。

     panic: malloc
         (P) malloc に負のバイト数で要求が行なわれました。

     panic: mapstart
         (P) コンパイラが、map() 関数に関しておかしくなりました。

     panic: null array
         (P) 内部配列ルーティンで、ヌル AV ポインタを渡されたもの
         があった。

     panic: pad_alloc
         (P) コンパイラが、一時領域や字句形式を割り当て、解放して
         いるスクラッチパッドについて混乱しました。

     panic: pad_free curpad
         (P) コンパイラが、一時領域や字句形式を割り当て、解放して
         いるスクラッチパッドについて混乱しました。

     panic: pad_free po
         (P) 不正なスクラッチパッドのオフセットが、内部的に検出さ
         れました。

     panic: pad_reset curpad
         (P) コンパイラが、一時領域や字句形式を割り当て、解放して
         いるスクラッチパッドについて混乱しました。

     panic: pad_sv po
         (P) 不正なスクラッチパッドのオフセットが、内部的に検出さ
         れました。






Perl manpages Last change: Release 5.0 Patchlevel 00           24






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     panic: pad_swipe curpad
         (P) 不正なスクラッチパッドのオフセットが、内部的に検出さ
         れました。

     panic: pad_swipe po
         (P) 不正なスクラッチパッドのオフセットが、内部的に検出さ
         れました。

     panic: pp_iter
         (P) foreach の繰返し子が、ループ文脈以外のところで呼ばれ
         ました。

     panic: realloc
         (P) 何か、realloc に負のバイト数を要求したものがあります。

     panic: restartop
         (P) 内部ルーティンから goto (または、同じようなもの) が
         要求されましたが、飛び先が与えれていません。

     panic: return
         (P) サブルーティンコンテキストや eval コンテキストへ、コ
         ンテキストスタックをポップしたあと、サブルーティンコンテ
         キストや eval コンテキストでないことがわかりました。

     panic: scan_num
         (P) scan_num() が、何か数字でないものに対して呼ばれまし
         た。

     panic: sv_insert
         (P) sv_insert() ルーティンが、存在する以上の文字列を削除
         するように指示されました。

     panic: top_env
         (P) コンパイラが、goto など妙なことを行なおうとしました。

     panic: yylex
         (P) 大文字小文字修飾子を処理中に、字句解析部がおかしな状
         態に陥りました。

     Parens missing around "%s" list
         (W) おそらく、

             my ($foo, $bar) = @_;

         のようにすべきところで、

             my $foo, $bar = @_;

         のように書いてしまいました。 "my" や "local" は、コンマ
         よりも強く結合することを忘れないでください。





Perl manpages Last change: Release 5.0 Patchlevel 00           25






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Perl %3.3f required--this is only version %s, stopped
         (F) 問題のモジュールは、現在実行中の Perl よりも最近のバ
         ージョンの機能を使っています。 ところで、どのくらいアッ
         プグレードしていないのですか。 perlfunc manpage の
         require の項を参照してください。

     Permission denied
         (F) suidperl の setuid エミュレータは、実行者が安全とは
         言えないと判断しました。

     POSIX getpgrp can't take an argument
         (F) お使いの C コンパイラは、引数に pid をとる BSD バー
         ジョンの getpgrp() と違って、引数をとらない POSIX のもの
         を使っています。

     Possible memory corruption: %s overflowed 3rd argument
         (F) ioctl() や fcntl() が、Perl が求めていた以上のものを
         返してきました。 Perl は、適量のバッファサイズを見積も
         りますが、念のためにバッファの最後に目印を付けています。
         この目印が壊されたため、Perl はメモリの破壊が起こったと
         判断しました。 perlfunc manpage の ioctl の項を参照して
         ください。

     Precedence problem: open %s should be open(%s)
         (S) 古い変則的な構文

             open FOO || die;

         は現在は、Perl 5 の文法の厳しい正規化の結果、単項演算子
         かリスト演算子と解釈されますので、

             open(FOO || die);

         という風に誤った解釈がなされます。 (古い open は、単項
         演算子とリスト演算子の中間のようなものでした。) ファイ
         ルハンドルの前後を括弧で囲むか、"||" 演算子の代わりに
         "or" 演算子を使わなくてはなりません。

     print on closed filehandle %s
         (W) print を行なおうとしたファイルハンドルは、既にクロー
         ズされています。 ロジックの流れをチェックしてください。

     printf on closed filehandle %s
         (W) printf を行なおうとしたファイルハンドルは、既にクロ
         ーズされています。 ロジックの流れをチェックしてください。










Perl manpages Last change: Release 5.0 Patchlevel 00           26






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Probable precedence problem on %s
         (W) コンパイラが、条件を期待するところで、裸の単語を見つ
         けました。 これは、多くの場合、|| や && が前の構文の最
         後の引数の一部として解釈されたときに発生します。たとえば、

             open FOO || die;

         のような場合です。

     Read on closed filehandle <%s>
         (W) 読み込みを行なおうとしたファイルハンドルは、既にクロ
         ーズされています。 ロジックの流れをチェックしてください。

     Reallocation too large: %lx
         (F) MS-DOS マシンでは、64K を越えるメモリを割り当てるこ
         とはできません。

     Recompile perl with -DDEBUGGING to use -D switch
         (F) Perl のコンパイル時に、適切な出力ルーティンが組み込
         まれていなければ、-D スイッチを使うことはできません。
         これは、多少のオーバヘッドがかかるもので、それが現在使っ
         ている Perl に組み込んでない理由でしょう。

     Recursive inheritance detected
         (F) 100 レベル以上の継承が行なわれました。 おそらく、継
         承階層の中で、予想外のループになっている部分があるものと
         思われます。

     Reference miscount in sv_replace()
         (W) 内部の sv_replace() 関数が、参照数が 1 でない、新規
         の SV を扱いました。

     regexp memory corruption
         (P) 正規表現コンパイラが渡したもので、正規表現エンジンが
         処理できなくなった。

     regexp out of space
         (P) safemalloc() が見つけるはずなので、「起こるはずのな
         いエラー」です。

     regexp too big
         (F) 現在の正規表現のインプリメンテーションでは、文字列の
         アドレスのオフセットを表わすのに short を使っています。
         このメッセージは、正規表現を編集したときに、32767 を越え
         てしまったことを表しています。 通常、このように正規表現
         が巨大化してしまうときには、文を分けた、より良い方法があ
         るはずです。 perlre manpage を参照してください。

     Reversed %s= operator
         (W) 代入演算子を逆順に書いています。 等号の後に単項演算
         子が続くときに、曖昧になるのを避けるため、代入演算子では、
         等号 = が、最後にこないといけません。



Perl manpages Last change: Release 5.0 Patchlevel 00           27






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Runaway format
         (F) 定義したフォーマットに、空になるまで繰り返す ~~ が含
         まれていましたが、一度に 200 行以上となり、199 行目と
         200 行目が全く同じになりました。 (スカラ変数には) @ の
         代わりに ^ を用いるか、(配列変数には) shiftpop を行
         なうかして、引数が自動的になくなるようになっていないとい
         けませんが、そうなっていないようです。 perlform manpage
         を参照してください。

     Scalar value @%s[%s] better written as $%s[%s]
         (W) 配列の一つの要素を選ぶのに、(@ で示される) 配列スラ
         イスを用いました。 一般には、($ で示される) スカラ値を
         使った方が良いと思われます。 違いは、$foo[&bar] とした
         場合、代入の対象としたときにも、添字を評価するときにも、
         常にスカラとして振る舞うのに対し、@foo[&bar] の場合には、
         代入の対象としてもリストとして振る舞い、添字にもリストコ
         ンテキストを与えることになります。 これは、1 つの添字だ
         けを期待するときには、おかしなこととなるでしょう。

     Script is not setuid/setgid in suidperl
         (F) 妙なことに、setuid ビット、もしくは setgid ビットが
         立っていないスクリプトに対して、suidperl プログラムが起
         動されました。 これは意味がありません。

     Search pattern not terminated
         (F) // もしくは m{} 構文の最後の区切り文字が見つかりませ
         んでした。 括弧類の区切り文字では、ネストを数えることを
         忘れないでください。

     seek() on unopened file
         (W) オープンされていないファイルハンドルか、既にクローズ
         されたファイルハンドルに対して、seek() 関数を使おうとし
         ました。

     select not implemented
         (F) このマシンでは、select() システムコールはインプリメ
         ントされていません。

     sem%s not implemented
         (F) このシステムでは、System V セマフォ IPC は使えません。

     semi-panic: attempt to dup freed string
         (S) 既に解放と印を付けたスカラを複製するために、内部の
         newSVsv() ルーティンが呼ばれました。

     Semicolon seems to be missing
         (W) この付近の構文エラーは、おそらくセミコロンか、コンマ
         などの演算子がなかったために起こったものと考えられます。

     Send on closed socket
         (W) 送信を行なおうとしたソケットは、既にクローズされてい
         ます。 ロジックの流れをチェックしてください。



Perl manpages Last change: Release 5.0 Patchlevel 00           28






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Sequence (?#... not terminated
         (F) 正規表現コメントは、閉じ括弧で終わらなければなりませ
         ん。 括弧を含めることは許されません。 perlre manpage
         を参照してください。

     Sequence (?%s...) not implemented
         (F) 使おうとした正規表現の拡張は、予約された文字ですが、
         まだインプリメントされていません。 perlre manpage を参
         照してください。

     Sequence (?%s...) not recognized
         (F) お使いになった正規表現の拡張は、意味をなしません。
         perlre manpage を参照してください。

     setegid() not implemented
         (F) $) へ代入を行なおうとしましたが、この OS では、
         setegid() システムコール (または、同等のもの) がサポート
         されていません。 少なくとも Configure では、そう判断さ
         れました。

     seteuid() not implemented
         (F) $> へ代入を行なおうとしましたが、この OS では、
         seteuid() システムコール (または、同等のもの) がサポート
         されていません。 少なくとも Configure では、そう判断さ
         れました。

     setrgid() not implemented
         (F) $( へ代入を行なおうとしましたが、この OS では、
         setrgid() システムコール (または、同等のもの) がサポート
         されていません。 少なくとも Configure では、そう判断さ
         れました。

     setruid() not implemented
         (F) $< へ代入を行なおうとしましたが、この OS では、
         setruid() システムコール (または、同等のもの) がサポート
         されていません。 少なくとも Configure では、そう判断さ
         れました。

     Setuid/gid script is writable by world
         (F) setuid エミュレータは、誰もが書き込みができるように
         なっているスクリプトは実行しません。 誰かが既に書き換え
         たかも知れないからです。

     shm%s not implemented
         (F) このシステムでは、System V 共有メモリ IPC は使えませ
         ん。

     shutdown() on closed fd
         (W) クローズされたソケットに shutdown を行なおうとしまし
         た。 多少、無駄のように思われます。





Perl manpages Last change: Release 5.0 Patchlevel 00           29






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     SIG%s handler "%s" not defined.
         (W) %SIG 内で指定したシグナルハンドラが、存在しません。
         間違ったパッケージで、設定を行なっているのかもしれません。

     sort is now a reserved word
         (F) もはや、誰もお目にかかることのない、旧世代のエラーメ
         ッセージです。 ただ、sort がキーワードとなる前には、こ
         れをファイルハンドルとして使う方がいました。

     Sort subroutine didn't return a numeric value
         (F) sort の比較ルーティンは、必ず数値を返さなければなり
         ません。 <=> や cmp を使わなかったか、正しく使わなかっ
         たものと思います。 perlfunc manpage の sort の項を参照
         してください。

     Sort subroutine didn't return single value
         (F) sort の比較サブルーティンは、要素が 1 個以外のリスト
         値を返すことはできません。 perlfunc manpage の sort の
         項を参照してください。

     Split loop
         (P) split が無限ループに陥りました。 (明らかに、split
         は、入力文字数以上にはできないはずですが、そうなってしま
         いました。) perlfunc manpage の split の項を参照してく
         ださい。

     Stat on unopened file <%s>
         (W) オープンされていないファイルハンドルか、既にクローズ
         されたファイルハンドルに対して、stat() 関数 (か、同様な
         ファイルテスト) を使おうとしました。

     Statement unlikely to be reached
         (W) exec() の後に、die() 以外の実行文があります。 失敗
         したとき以外は、exec() から return することはありません
         から、ほとんどの場合には誤りでしょう。 return してくる
         system() に置き換える必要があるかもしれません。 この警
         告を止めるには、ブロック内に exec() だけを記述してくださ
         い。

     Subroutine %s redefined
         (W) サブルーティンを再定義しました。 この警告を止めるに
         は、

             {
                 local $^W = 0;
                 eval "sub name { ... }";
             }

         としてください。






Perl manpages Last change: Release 5.0 Patchlevel 00           30






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Substitution loop
         (P) 置換が無限ループに陥りました。 (明らかに、置換は入
         力文字数以上には起こらないはずですが、それが起こってしま
         いました。) perlop manpage の「クォートとクォートのよう
         な演算子」の節の置換に関する記述を参照してください。

     Substitution pattern not terminated
         (F) s/// もしくは s{}{} 構文の真ん中の区切り文字が見つか
         りませんでした。 括弧類の区切り文字では、ネストを数える
         ことを忘れないでください。

     Substitution replacement not terminated
         (F) s/// もしくは s{}{} 構文の最後の区切り文字が見つかり
         ませんでした。 括弧類の区切り文字では、ネストを数えるこ
         とを忘れないでください。

     substr outside of string
         (W) 文字列の外を指す substr() を参照しようとしました。
         つまり、オフセットの絶対値が、文字列の長さより大きくなっ
         ています。 perlfunc manpage の substr の項を参照してく
         ださい。

     suidperl is no longer needed since...
         (F) お使いの Perl は、-DSETUID_SCRIPTS_ARE_SECURE_NOW を
         指定してコンパイルされていますが、setuid エミュレータが、
         実行されてしまいました。

     syntax error
         (F) おそらく、構文エラーが起こっています。 よくある原因
         としては、

             キーワードのスペルミス。
             セミコロンを忘れた。
             コンマを忘れた。
             開き括弧、閉じ括弧を忘れた。
             開き中括弧、閉じ中括弧を忘れた。
             クォートの閉じ忘れ。

         が考えられます。 多くの場合、構文エラーと一緒に、別のエ
         ラーメッセージが出て、情報を与えてくれます。 (-w を付け
         ることが、助けになることもあります。) エラーメッセージ
         自身には、何行目まで行って、諦めたのかということも含まれ
         ています。 Perl はでたらめな入力を理解するのが得意なの
         で、実際のエラーはもう少し前に在ることもあります。 とき
         には、行番号が全く役に立たないこともあり、はまってしまっ
         たなら、エラーのきっかけが何かを見つける唯一の手段は、プ
         ログラムを寸断して、エラーがなくなるまで、perl -c を繰り
         返すしかありません。 頭の体操 20 問だと思ってください。







Perl manpages Last change: Release 5.0 Patchlevel 00           31






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     System V IPC is not implemented on this machine
         (F) 何か、名前が "sem"、"shm"、"msg" で始まる関数を実行
         しようとしました。 perlfunc manpage の semctl などの項
         を参照してください。

     Syswrite on closed filehandle
         (W) 書き込みを行なおうとしたファイルハンドルは、既にクロ
         ーズされています。 ロジックの流れをチェックしてください。

     tell() on unopened file
         (W) オープンされていないファイルハンドルか、既にクローズ
         されたファイルハンドルに対して、tell() 関数を使おうとし
         ました。

     Test on unopened file <%s>
         (W) オープンされていないファイルハンドルに対して、ファイ
         ルテスト演算子を実行しようとしました。 ロジックをチェッ
         クしてください。 perlfunc manpage の -X の節を参照して
         ください。

     That use of $[ is unsupported
         (F) 現在、$[ への代入は、厳しく制限され、コンパイラディ
         レクティブと解釈されます。 使えるのは、

             $[ = 0;
             $[ = 1;
             ...
             local $[ = 0;
             local $[ = 1;
             ...

         の一つだけです。 これは、一つのモジュールで、他のモジュ
         ールが意図しないような、配列のベースを変更する問題を回避
         するためのものです。 perlvar manpae の $[ の節を参照し
         てください。

     The %s function is unimplemented
         (F) この関数は、Configure の調査によると、このアーキテク
         チャでは、インプリメントされていないようです。

     The crypt() function is unimplemented due to excessive paranoia.
         (F) Configure は、マシン上で crypt() 関数を見つけられま
         せんでした。 おそらく、ベンダからの供給がなかったからで、
         おそらく、ベンダはアメリカ政府がそれを秘密だとしていると
         思っているか、少なくとも思っているというふりをしているの
         でしょう。 私を引き合いに出したところで、それは否定され
         ることでしょう。








Perl manpages Last change: Release 5.0 Patchlevel 00           32






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     The stat preceding -l _ wasn't an lstat
         (F) 過去の stat がシンボリックリンクを通り過ぎた、実際の
         ファイルの情報を取って、stat バッファに入れているときに、
         シンボリックタイプの stat をカレント stat バッファに対し
         て行なっても意味がありません。 実際のファイル名を使って
         ください。

     times not implemented
         (F) お使いの C ライブラリでは、times() を行わないようで
         す。 UNIX ではない環境でしょうか。

     Too few args to syscall
         (F) syscall() には、最低限でも呼び出すシステムコールを示
         す、引数が一つ必要です。

     Too many args to syscall
         (F) Perl では、syscall() に最大 14 までしか、引数を渡す
         ことができません。

     Too many arguments for %s
         (F) 関数が要求する以上の引数を指定しました。

     trailing \ in regexp
         (F) 正規表現が、バックスラッシュを付けていないバックスラ
         ッシュで終了しました。 バックスラッシュを付けてください。
         perlre manpage を参照してください。

     Translation pattern not terminated
         (F) tr/// もしくは tr[][] 構文の真ん中の区切り文字が見つ
         かりませんでした。

     Translation replacement not terminated
         (F) tr/// もしくは tr[][] 構文の最後の区切り文字が見つか
         りませんでした。

     truncate not implemented
         (F) このマシンでは、Configure が知りうる、ファイルの切り
         詰めの機能がインプリメントされていません。

     Type of arg %d to %s must be %s (not %s)
         (F) この関数は、その位置に決まった型の引数を必要とします。
         配列は、@NAME もしくは @{EXPR} でなくてはならず、ハッシ
         ュは、%NAME もしくは %{EXPR} でなければなりません。 暗
         黙の被参照は許されませんので、明示的な被参照として、
         {EXPR} 形式を使ってください。 perlref manpage を参照し
         てください。

     umask: argument is missing initial 0
         (W) umask 222 は正しくありません。 Perl の 8 進数リテラ
         ルは、C と同じように 0 で始まりますから、 0222 とすべき
         です。




Perl manpages Last change: Release 5.0 Patchlevel 00           33






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Unbalanced context: %d more PUSHes than POPs
         (W) いくつの実行コンテキストに入って、出たかということの
         内部矛盾が exit コードで発見されました。

     Unbalanced saves: %d more saves than restores
         (W) いくつの値が、一時的にローカル化されたかということの
         内部矛盾が exit コードで発見されました。

     Unbalanced scopes: %d more ENTERs than LEAVEs
         (W) いくつのブロックにに入って、出たかということの内部矛
         盾が exit コードで発見されました。

     Unbalanced tmps: %d more allocs than frees
         (W) いくつの揮発性スカラの割り当てを行ない、解放したかと
         いうことの内部矛盾が exit コードで発見されました。

     Undefined format "%s" called
         (F) このフォーマットは存在しないように見えます。 おそら
         く、別のパッケージに存在するのではないでしょうか。
         perlform manpage を参照してください。

     Undefined sort subroutine "%s" called
         (F) 指定された sort の比較ルーティンは存在していないよう
         に思われます。 おそらく、別のパッケージに存在するのでは
         ないでしょうか。 perlfunc manpage の sort の項を参照し
         てください。

     Undefined subroutine &%s called
         (F) 指定されたサブルーティンが定義されていません。 定義
         されていたとしても、既に未定義になっています。

     Undefined subroutine called
         (F) 呼びだそうとしている無名のサブルーティンは、定義され
         ていません。 定義されていたとしても、既に未定義になって
         います。

     Undefined subroutine in sort
         (F) 指定された sort の比較ルーティンは宣言されましたが、
         定義されていないようです。 perlfunc manpage の sort の
         項を参照してください。

     unexec of %s into %s failed!
         (F) unexec() ルーティンが何らかの理由によって失敗しまし
         た。 最初にインストールしたであろう、サイトの FSF 代表
         者にたずねてみてください。

     Unknown BYTEORDER
         (F) このバイト順序を入れ替える関数がありません。







Perl manpages Last change: Release 5.0 Patchlevel 00           34






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     unmatched () in regexp
         (F) 正規表現の中では、バックスラッシュを付けていない括弧
         は、必ず対応していなければなりません。 vi をお使えであ
         れば、% を使って対応する括弧を探すことができます。
         perlre manpage を参照してください。

     Unmatched right bracket
         (F) 字句解析部が開き中括弧よりも多くの閉じ中括弧を見つけ
         ました。 開き中括弧のもれと思われます。 一般的な規則と
         して、最後に修正した場所の付近に、忘れた中括弧 (であるは
         ずのもの) があることでしょう。

     unmatched [] in regexp
         (F) 文字クラスの前後の大括弧は、対応していないといけませ
         ん。 文字クラスの中に閉じ大括弧を入れたいのであれば、バ
         ックスラッシュを付けるか、文字クラスの最初に置いてくださ
         い。 perlre manpage を参照してください。

     Unquoted string "%s" may clash with future reserved word
         (W) いつの日にか、予約語とかち合うかもしれない、裸の単語
         を使用しています。 そのような単語は、クォートするか、大
         文字を入れるか、アンダーバー (_) をいれるかしてください。
         その裸の単語は、サブルーティンとして宣言することも可能で
         す。

     Unrecognized character \%03o ignored
         (S) 入力にゴミの文字が見つかり、無視しました。 EBCDIC
         マシーンの制御文字だとかの場合のためのメッセージです。

     Unrecognized signal name "%s"
         (F) kill() 関数に、認識できないシグナル名を指定しました。
         お使いのシステムで使用可能なシグナル名を調べるに
         は、シェル上で kill -l などとしてください。

     Unrecognized switch: -%s
         (F) Perl に間違ったオプションを指定しました。 これを行
         なってはいけません。 (指定したつもりがないのであれば、
         #! 行に間違ったオプションがスイッチが指定されていないか
         をチェックしてください。)

     Unsuccessful %s on filename containing newline
         (W) あるファイル名に対して、ファイル操作を行ないましたが、
         失敗しました。「おそらく」ファイル名に改行文字がついてい
         たからで、「おそらく」chop() や chomp() するのを忘れたの
         でしょう。 perlfunc manpage の chop の項を参照してくだ
         さい。

     Unsupported directory function "%s" called
         (F) このマシンでは、opendir() や readdir() がサポートさ
         れていません。





Perl manpages Last change: Release 5.0 Patchlevel 00           35






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Unsupported function %s
         (F) このマシンでは、表示した関数はインプリメントされてい
         ません。 少なくとも、Configure はそう判断しました。

     Unsupported socket function "%s" called
         (F) このマシンでは、バークレイのソケット機構がサポートさ
         れていないか、少なくとも Configure がそう判断しました。

     Unterminated <> operator
         (F) 項が必要とされるところで、開き山括弧が見つけたため、
         対応する閉じ山括弧を探しましたが、見つかりませんでした。
         可能性としては、必要な括弧を省いてしまい、本当は、「小な
         り記号」を表したかった場合が考えられます。

     Use of $# is deprecated
         (D) これは、貧相な awk の機能をエミュレートしようとする
         ものでした。 代わりに、明示的に printf() や sprintf()
         を使ってください。

     Use of $* is deprecated
         (D) この変数は、自分のスクリプトでも、たまたま呼んだ先の
         サブルーティンでも、複数行のパターンマッチを有効にしてし
         まいます。 $* の離れたところに与える危険な影響を避けて
         これを行なうために、新しい //m 修飾子と //s 修飾子を使っ
         てください。

     Use of %s is deprecated
         (D) 示した構文は、もはや使うことが推奨されません。 一般
         にはもっと良い方法があるからであり、また古い方法は、悪い
         副作用があるからです。

     Use of implicit split to @_ is deprecated
         (D) サブルーティンの引数を壊すとコンパイラに多大な労力を
         かけることになるので、split() の結果は明示的に配列 (やリ
         スト) に代入を行なうようにしてください。

     Use of uninitialized value
         (W) 未定義値を、あたかも既に定義されているかのように使用
         しました。 これは、"" か 0 と解釈されますが、間違いの可
         能性があります。 この警告を止めるには、変数に初期値を代
         入してください。














Perl manpages Last change: Release 5.0 Patchlevel 00           36






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     Useless use of %s in void context
         (W) ブロックの値を返さない文や、スカラのコンマ演算子の左
         側のように返却値の無い文脈で、副作用のないことを行ないま
         した。 多くは、みなさんの間違いを指摘するものではなく、
         Perl がみなさんの意向を汲み取った解釈ができないことで起
         こります。 たとえば、みなさんが C の優先順位を Python
         の優先順位と混同して、

             ($one, $two) = (1, 2);

         とするべきところで、

             $one, $two = 1, 2;

         とすれば、このエラーとなります。

     Warning: unable to close filehandle %s properly.
         (S) open() によって暗黙のうちに行なわれる close() が、
         close() のエラーとなりました。 通常、ファイルシステムが
         いっぱいであることを示します。

     Warning: Use of "%s" without parens is ambiguous
         (S) 単項演算子の後に、何か項にも単項演算子にも解釈できる、
         二項演算子のようなものが置かれました。 たとえば、rand
         関数がデフォルトの引数として、1.0 をとることを知っていれ
         ば、

             rand + 5;

         と書いて、

             rand() + 5;

         と同じことと思うかもしれませんが、実際には、

             rand(+5);

         の意味になります。 したがって、思うように解釈させるには、
         括弧が必要になります。

     Write on closed filehandle
         (W) 書き込みを行なおうとしたファイルハンドルは、既にクロ
         ーズされています。 ロジックの流れをチェックしてください。

     X outside of string
         (F) unpack している文字列の先頭より前の相対位置を示して
         いる pack テンプレートを指定しました。 perlfunc manpage
         の pack の項を参照してください。







Perl manpages Last change: Release 5.0 Patchlevel 00           37






PERLDIAG(1)              USER COMMANDS                PERLDIAG(1)



     x outside of string
         (F) unpack している文字列の最後より後の相対位置を示して
         いる pack テンプレートを指定しました。 perlfunc manpage
         の pack の項を参照してください。

     Xsub "%s" called in sort
         (F) ソートの比較ルーティンとして、外部サブルーティンを使
         用することは、まだサポートされていません。

     Xsub called in sort
         (F) ソートの比較ルーティンとして、外部サブルーティンを使
         用することは、まだサポートされていません。

     You can't use -l on a filehandle
         (F) ファイルはオープンされたファイルを表わすものであり、
         ファイルをオープンしたときには、探しているシンボリックリ
         ンクは、既に通り過ぎた後です。 代わりにファイル名を使っ
         てください。

     YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!
     (このカーネルでは、SET-ID スクリプトが禁止されていません!)
         (F) そして、そうすることはできないでしょう。 カーネルの
         ソースはお持ちではないでしょうし、ベンダも欲しいものを提
         供してはくれないでしょうから。 もっとも良いのは、スクリ
         プトに setuid C ラッパーを被せるために、eg ディレクトリ
         の wrapsuid スクリプトを使ってみることです。

     You need to quote "%s"
         (W) シグナルハンドラ名に、裸の単語を代入しました。 残念
         ながら、そのサブルーティンは既に宣言されていて、Perl 5
         では、おそらく思惑とは違って、代入の実行時にサブルーティ
         ンの呼び出しが起こります。 (もし、本当にそうしたいので
         あれば、サブルーティン名に & を付けてください。)

     [gs]etsockopt() on closed fd
         (W) クローズされたソケットに getsockopt または setsockopt
         を行なおうとしました。 socket() の呼び出し時に、返却値
         のチェックを忘れたのではありませんか。 perlfunc manpage
         の getsockopt の項を参照してください。

     \1 better written as $1
         (W) パターンの外では、後方参照は変数の形で存在します。
         後方参照の利用は、置換の右側の部分で扱われますが、スタイ
         ル的には、他の Perl プログラマが期待し、9 個以上の後方参
         照があるときにもうまく動作する、変数形式を使う方が良いで
         しょう。









Perl manpages Last change: Release 5.0 Patchlevel 00           38