NAME

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


DESCRIPTION

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

    (W) 警告 (オプション)
    (D) 非推奨 (オプション)
    (S) 重大な警告 (デフォルトでは有効)
    (F) 致命的エラー (トラップ可能)
    (P) 起こるはずのない内部エラー (トラップ可能)
    (X) 重大致命的エラー (トラップ不可能)
    (A) 外部エラーメッセージ (Perl 以外で生成されたもの)

上記のうち、最初の三つ (W, D, S) に分類されるメッセージの大部分は warings プラグマで制御できます。

メッセージが warnings プラグマで制御できる場合、 警告カテゴリは以下の説明で分類文字と共に記されています。

warnings プラグマか -w-W のオプションを使うと追加の警告が 有効になります。 警告は、表示する変わりに警告が出るたびに呼び出されるサブルーチンへの リファレンスを $SIG{__WARN__} にセットすることで捕捉できます。 perlvar を参照してください。

warnings プラグマか -X オプションで明示的に無効にされない限り、 厳しい警告は常に有効です。

トラップ可能なエラーは評価演算子を使ってトラップできます。 eval in perlfunc を参照してください。 ほとんど全ての場合、警告は warnings プラグマを使うことで 選択的に無効にしたり致命的エラーに昇格させたりできます。 warnings を参照してください。

メッセージは大文字小文字を無視してアルファベット順に並んでいます。 これらの中には一般的なものもあります。 変化する部分は %s またはその他の printf スタイルの表記をしています。 これらの表記や、その他の英文字以外の文字は並び順に関しては 無視されています。 メッセージを探すには、英文字以外は無視してください。

accept() on closed socket %s

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

Allocation too large: %lx

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

'%c' allowed only after types %s

(F) pack()unpack() での '!', '<', '>''!' の修飾子は特定のタイプの 後にのみつけることができます。 pack in perlfunc を参照してください。

Ambiguous call resolved as CORE::%s(), qualify as such or use &

(W ambiguous) 定義したサブルーチンの名前が Perl のキーワードと同じで、 どちらかを呼び出すために修飾なしで名前を使っています。 Perl は、サブルーチンがインポートされたものではないので、 組み込みのものを呼び出すことにしました。

サブルーチン呼び出しとして解釈することを強制させるためには、 サブルーチン名の前にアンパサンドをつけるか、名前をパッケージ名で 修飾してください。 他の方法として、サブルーチンをインポートする(あるいは use subs プラグマを使ってインポートされたふりをする)方法もあります。

警告なしに Perl 演算子として解釈させるためには、(CORE::log($x) のように) 演算子に CORE:: 接頭辞をつけるか、サブルーチンをオブジェクト メソッド(Subroutine Attributes in perlsubattributes を 参照してください)として定義してください。

Ambiguous range in transliteration operator

(F) tr/a-z-0// のような、何の意味もないことをしようとしました。 文字変換の文字に - を加える時は、最初か最後に置いてください。 (以前は tr/a-z-0//tr/a-y// と同義でしたが、これはおそらく 予想していたものと違うでしょう。)

Ambiguous use of %s resolved as %s

(W ambiguous)(S) 何か、あなたが考えているようには解釈できないものが ありました。 普通は、不足しているクォート、演算子、かっこ、宣言を追加することで かなり簡単にあいまいさを解消できます。

'|' and '<' may not both be specified on command line

(F) VMS 特有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、STDIN がパイプで あることを発見しましたが、さらに '<' を使って STDIN をリダイレクトしようと しました。 STDIN ストリームは一つだけにしてください。 お願いします。

'|' and '>' may not both be specified on command line

(F) VMS 特有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、STDOUT を ファイルと他のコマンドへのパイプと両方にリダイレクトしようとしていると 判断しました。 どちらかを選ぶ必要がありますが、以下のように出力を二つのストリームに 「分割」するプログラムや Perl スクリプトにパイプすることを止めるものは 何もありません。

    open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!";
    while (<STDIN>) {
        print;
        print OUT;
    }
    close OUT;
Applying %s to %s will act on scalar(%s)

(W misc) パターンマッチ (//), 置換 (s///), 文字置換 (tr///) 演算子はスカラ値に対して動作します。 これらを配列やハッシュに適用すると、配列やハッシュをスカラ値 -- 配列の長さかハッシュの大きさの情報 -- に変換し、そのスカラ値に対して 動作します。 これはおそらくしたいこととは違うでしょう。 代替案については grep in perlfuncmap in perlfunc を参照してください。

Args must match #! line

(F) setuid エミュレータでは、Perl を起動したときの引数と、 #! の行で指定された引数はマッチすることが要求されます。 #! 行の 1 引数制限があるシステムがあるので、 組み合わせスイッチを試してみてください; 例えば、-w -U-wU にしてください。

Arg too short for msgsnd

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

%s argument is not a HASH or ARRAY element or a subroutine

(F) exists() の引数は以下のように、ハッシュや配列の要素か、 アンパサンド付きのサブルーチンでなければなりません:

    $foo{$bar}
    $ref->{"susie"}[12]
    &do_something
%s argument is not a HASH or ARRAY element or slice

(F) delete() の引数は以下のようにハッシュか配列の要素であるか:

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

あるいは以下のようにハッシュか配列のスライスでなければなりません:

    @foo[$bar, $baz, $xyzzy]
    @{$ref->[12]}{"susie", "queue"}
%s argument is not a subroutine name

(F) exists &sub の形の exists() の引数はサブルーチン呼び出しではなく、 サブルーチン名でなければなりません。 exists &sub() とするとこのエラーが生成されます。

Argument "%s" isn't numeric%s

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

Argument list not closed for PerlIO layer "%s"

(W layer) Perl I/O システムに層を引数付きで追加するときに、引数リストを 閉じる ) を忘れています。 (層はデータの外部表現と内部表現の変換を扱います。) Perl はここで層のリストのパースを中止し、この層の追加は行われませんでした。 明示的に失敗する操作を要求していないのであれば、これは環境変数 PERLIO の 値が原因かもしれません。

Array @%s missing the @ in argument %d of %s()

(D deprecated) 本当に古い 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 は右辺のコンテキストを決めることができません。

A thread exited while %d threads were running

(W threads)(S) スレッドが有効な Perl を使っているときに、他のスレッドが まだ動いている状態で、あるスレッド(メインスレッドには限りません)が 終了しました。 普通は、作成したスレッドに join することで返り値を集めて、それから メインスレッドから終了するのがよい考えです。 threads を参照してください。

Attempt to access disallowed key '%s' in a restricted hash

(F) 制限ハッシュで許されているキーの集合に含まれていないキーに対して 取得または設定しようとして失敗しました。

Attempt to bless into a reference

(F) bless() 演算子の CLASSNAME 引数は結果のオブジェクトに bless する パッケージ名を想定しています。 そこに何かへのリファレンスが与えられました。 おそらく以下のようにしたのでしょう:

    bless $self, $proto;

以下を意図していたはずです:

    bless $self, ref($proto) || $proto;

実際に与えられたリファレンスを文字列化したものに bless したい場合は、 以下のようにして自分で文字列化する必要があります:

    bless $self, "$proto";
Attempt to delete disallowed key '%s' from a restricted hash

(F) 制限ハッシュで、キー集合に含まれていないキーから削除しようとしました。

Attempt to delete readonly key '%s' from a restricted hash

(F) 制限ハッシュで、読み込み専用として宣言されている値のキーを 削除しようとしました。

Attempt to free non-arena SV: 0x%lx

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

Attempt to free nonexistent shared string

(P internal) Perl はストレージおよびハッシュキーとその他の 文字列へのアクセスを最適化するために、文字列の参照数テーブルを 管理しています。 これは誰かがもうテーブルにない文字列の参照カウントを減らそうと したことを示します。

Attempt to free temp prematurely

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

Attempt to free unreferenced glob pointers

(P internal) シンボルのエイリアスについて、参照カウントの値がおかしな 状態になりました。

Attempt to free unreferenced scalar

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

Attempt to join self

(F) スレッドをそれ自身の中から join しようとしました。 これは不可能な動作です。 間違ったスレッドに join しようとしているか、 あるいは join() を他のスレッドに移動させる必要があります。

Attempt to pack pointer to temporary value

(W pack) (関数の結果や計算された式といった)一時的な値を pack() の "p" テンプレートに渡そうとしました。 これは、たとえ現在の文の終了前でも、不正な値となり得ます。 この警告を避けるためには、pack テンプレート "p" の引数として、 リテラルかグローバルな値を使ってください。

Attempt to reload %s aborted.

(F) 既に一度コンパイルに失敗しているファイルを userequire で 読み込もうとしました。 Perl は %INC からこのファイルのエントリを削除するまで再びファイルを コンパイルしようとはしません。 require in perlfunc%INC in perlvar を参照してください。

Attempt to set length of freed array

(W) 既に解放された配列の長さを設定しようとしました。 配列の最後のインデックスを表現するスカラをリファレンスに保存して、 後でこのリファレンスを通して代入することでこれを行えます。 例えば:

    $r = do {my @a; \$#a};
    $$r = 503
Attempt to use reference as lvalue in substr

(W substr) 左辺値として使われる substr() の 1 番目の引数としてリファレンスを 渡しました; これはやや奇妙なことです。 おそらくはまずデリファレンスするのを忘れたのでしょう。 substr in perlfunc を参照してください。

Bad arg length for %s, is %d, should be %s

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

Bad evalled substitution pattern

(F)置換のための置き換え文字列を評価するために /e オプションを指定して いますが、評価するコードに文法エラーがありました; 最もありそうなことは、予期しない位置に右中かっこ '}' があったことです。

Bad filehandle: %s

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

Bad free() ignored

(S malloc) まず、malloc() されていないものに対して、内部ルーティンが free() を呼びました。 強制ですが、環境変数 PERL_BADFREE を 0 にすることで無効化できます。

このメッセージ は、AIXOS/2 のような、「ハード」動的リンクを 行うシステムで DB_File を使うとしばしば表示されます。 これは DB がシステムの malloc() を許していることに気が付かない Berkeley DB のバグです。

Bad hash

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

Badly placed ()'s

(A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

Bad name after %s::

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

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

は、以下と同じではありません。

    $var = 'myvar';
    $sym = "mypack::$var";
Bad realloc() ignored

(S malloc) 内部ルーチンが、最初に malloc() されていない何かに対して realloc() を呼び出しました。 必須ですが、環境変数 PERL_BADFREE に 1 をセットすることで無効化できます。

Bad symbol for array

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

Bad symbol for dirhandle

(P) シンボルテーブルエントリではないものに、ディレクトリハンドルエントリを 登録するような内部要求があがりました。

Bad symbol for filehandle

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

Bad symbol for hash

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

Bareword found in conditional

(W bareword) コンパイラが、条件が想定される位置に裸の単語を発見しました。 これはしばしば、|| や && が直前の構造の最後の引数の一部として パースされたことを意味します; 例えば:

    open FOO || die;

これはまた、裸の単語として解釈されるような定数をタイプミスしたことを 示している場合もあります:

    use constant TYPO => 1;
    if (TYOP) { print "foo" }

strict プラグマはこのようなエラーを防ぐのに便利です。

Bareword "%s" not allowed while "strict subs" in use

"strict subs" が有効の場合、裸の単語はサブルーチンの識別子、 中かっこの中、シンボル "=>" の左側でのみ許されます。 おそらくサブルーチンを先行宣言する必要があるのでは?

Bareword "%s" refers to nonexistent package

(W bareword) Foo:: の形で修飾された裸の単語が使われていますが、 コンパイラはこの場所以外でこの名前空間が使われている場所を 発見できませんでした。 おそらくパッケージを専攻宣言する必要があるのでは?

BEGIN failed--compilation aborted

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

BEGIN not safe after errors--compilation aborted

(F) Perl は既にコンパイルエラーが発生した後に BEGIN {} サブルーチン (または use 指示子(これは BEGIN {} を暗示します))を 発見しました。 BEGIN {} が意図した環境は(エラーのために)保証されず、 引き続くコードは正しい処理に依存していると考えられるので、 Perl は単に諦めました。

\1 better written as $1

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

Binary number > 0b11111111111111111111111111111111 non-portable

(W portable) 指定された 2 進数が 2**32-1 (4294967295) を越えるので、 システム間での移植性がありません。 移植性に関するさらなる考察については perlport を参照してください。

bind() on closed socket %s

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

binmode() on closed filehandle %s

(W unopened) 開いていないファイルハンドルに binmode() を使おうとしました。 制御フローと引数の数をチェックしてください。

Bit vector size > 32 non-portable

(W portable) 32 を越えるサイズのビットベクタは移植性がありません。

Bizarre copy of %s in %s

(P) コピーできない内部の値をコピーしようとしました。

Buffer overflow in prime_env_iter: %s

(W) VMS 特有の警告です。 Perl が %ENV を反復する準備中、長すぎる論理名かシンボル定義に 遭遇したので、文字列は表示したように切り詰められました。

Callback called exit

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

%s() called too early to check prototype

(W prototype) 以前にパーサが宣言または定義されているのを見た、 プロトタイプ付きの関数を呼び出しましたが、Perl は呼び出しがプロトタイプに 従っているかどうかをチェックできませんでした。 問題になっているサブルーチンのプロトタイプ宣言を最初の方に追加するか、 適切なプロトタイプチェックを行うためにサブルーチン定義を呼び出しの前に 移動させる必要があります。 または、関数を正しく呼び出していることが確かな場合は、名前の前に アンパサンドを付けることで警告を回避できます。 perlsub を参照してください。

Cannot compress integer in pack

(F) pack("w",...) の引数が、圧縮するには大きすぎます。 BER 圧縮整数フォーマットは正の整数のみ扱えますが、無限やとても大きい数 (> 1e308) を圧縮しようとしました。 pack in perlfunc を参照してください。

Cannot compress negative numbers in pack

(F) pack("w",...) の引数が負数です。 BER 圧縮整数フォーマットは正の整数のみ扱えます。 pack in perlfunc を参照してください。

Cannot convert a reference to %s to typeglob

(F) あなたは Perl のシンボルテーブルを直接操作して、リファレンスをその中に 補完し、それからそのシンボルを伝統的な Perl の文法のよって アクセスしようとしました。 このアクセスによって、Perl はこの型グロブを自動有効化しますが、 リファレンス型から型グロブへの正当な変換方法はありません。

Cannot copy to %s in %s

(P) Perl が、直接代入できない内部型に値をコピーしようとする試みを 検出しました。

Can only compress unsigned integers in pack

(F) pack("w",...) の引数が整数ではありません。 BER 圧縮整数フォーマットは正の整数のみ扱えますが、何か他のものを 圧縮しようとしました。 pack in perlfunc を参照してください。

Can't bless non-reference value

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

Can't "break" in a loop topicalizer

(F) break を呼び出しましたが、given ブロックではなく foreach ブロック内でした。 おそらく nextlast を使いたかったのでしょう。

Can't "break" outside a given block

(F) break を呼び出しましたが、given ブロックの内側ではありません。

Can't call method "%s" in empty package "%s"

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

Can't call method "%s" on an undefined value

(F) メソッド呼び出しの文法が使われていますが、 オブジェクトリファレンスかパッケージ名であるべきところが未定義値です。 以下のように書くとエラーが再現します:

    $BADREF = undef;
    process $BADREF 1,2,3;
    $BADREF->process(1,2,3);
Can't call method "%s" on unblessed reference

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

Can't call method "%s" without a package or object reference

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

    $BADREF = 42;
    process $BADREF 1,2,3;
    $BADREF->process(1,2,3);
Can't chdir to %s

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

Can't check filesystem of script "%s" for nosuid

(P) なぜかスクリプトが nosuid かどうかをファイルシステムから 調べることができません。

Can't coerce array into hash

(F) ハッシュが想定される場所で配列を使っていますが、 この配列にはキーから添え字に変換するための情報がありません。 このようなことは添え字 0 にハッシュリファレンスがある配列でのみ可能です。

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 "continue" outside a when block

(F) continue を呼び出しましたが、whendefault のブロックの 内側ではありません。

Can't create pipe mailbox

(F) VMS 特有のエラーです。 プロセスはクォータを使い切ったか、その他の設備問題の影響を受けました。

Can't declare class for non-scalar %s in "%s"

(F) 現在のところ、スカラ変数のみが "my", "our", "state" 定義の中で特定の クラス修飾子と共に定義できます。 この動作は将来には他の種類の変数に拡張されるでしょう。

Can't declare %s in "%s"

(F) スカラ変数、配列変数、ハッシュ変数だけが、"my", "our", "state" 変数として 宣言できます。 これらは、名前として通常の識別子を持たなければなりません。

Can't do inplace edit: %s is not a regular file

(S inplace) /dev や FIFO のような、特殊ファイルに対して、-i スイッチを 使おうとしました。 そのファイルは、無視されました。

Can't do inplace edit on %s: %s

(S inplace) 表示された理由により、新しいファイルの生成に失敗しました。

Can't do inplace edit without backup

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

Can't do inplace edit: %s would not be unique

(S inplace) ファイルシステムが 14 文字より長いファイル名に対応しておらず、 Perl は -i オプションによるその場編集の間のユニークなファイル名の 作成ができませんでした。 このファイルは無視されます。

Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/

(F) 最小値は最大値以下でなければなりません。 もし、本当に正規表現が 0 回繰り返したものにマッチさせたいなら、単に {0} としてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

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 emulate -%s on #! line

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

Can't %s %s-endian %ss on this platform

(F) プラットフォームのバイト順序がビッグエンディアンでも リトルエンディアンでもないか、ポインタサイズがとても変わっています。 ビッグエンディアンやリトルエンディアンの不動小数点数やポインタの pack や unpack はできません。 pack in perlfunc を参照してください。

Can't exec "%s": %s

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

Can't exec %s

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

Can't execute %s

(F) -S スイッチを使いましたが、PATH に見つかった実行するスクリプトが 正しいパーミッションではありませんでした。

Can't find an opnumber for "%s"

(F) CORE::word の形の文字列が prototype() に与えられましたが、 名前 word は組み込みではありません。

Can't find %s character property "%s"

(F) \p{}\P{} を使っていますが、そのような名前の文字プロパティは 見つかりませんでした。 おそらくプロパティ名をタイプミスした(文字プロパティ名は英数字だけから 構成されていることを忘れないでください)か、IsIn の接頭辞を 忘れたのでしょう。

Can't find label %s

(F) どこにも見つからないラベルへ goto を行なおうとしました。 goto in perlfunc を参照してください。

Can't find %s on PATH

-S オプションを使いましたが、実行するスクリプトは PATH に 見つかりませんでした。

Can't find %s on PATH, '.' not in PATH

(F) -S オプションが使われましたが、 PATH に実行するスクリプトが 見つかりません。あるいは少なくとも適切なパーミッションがありません。 スクリプトはカレントディレクトリにはありますが、PATH に カレントディレクトリは含まれていません。

Can't find string terminator %s anywhere before EOF

(F) Perl の文字列は、複数行に渡ることができます。このメッセージは、 文字列を終わる区切り文字が見つからなかったことを意味します。 括弧類の区切り文字では、ネストを数えるので、以下では、最後の括弧が 無いと言われます:

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

このエラーがヒアドキュメントで起きた場合、閉じタグの前か後に 見えない空白を含んでいるかもしれません。 よいプログラマ用エディタには、このような文字を探す助けになる方法が あります。

Can't find Unicode property definition "%s"

(F) (例えば \p{Lu} が全て大文字、のように) Unicode プロパティを意味する \p を使おうとしました。 Unicode プロパティを使いたい場合は、既知のプロパティの一覧について perlunicode を参照してください。 Unicode プロパティを使うつもりでない場合は、\\p (単に \p) または \Q\p (\E までの残りの文字列) を使って \p を エスケープしてください。

Can't fork

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

Can't get filespec - stale stat buffer?

(S) VMS 特有の警告です。 これは VMS と、Perl が仮定している Unix モデルでは、アクセスチェックに違いが あることによって起こります。 VMS では、アクセスチェックは stat バッファのビットではなくファイル名によって 行われるので、ACL やその他の保護が考慮されます。 残念ながら、Perl は stat バッファに全ての必要な情報が含まれていると仮定して、 アクセスチェックルーチンにはファイルスペックではなくこれを渡します。 stat バッファにあるデバイス名と FID を使ってファイルスペックを 取得しようとしますが、これは引き続いて CRTL stat() ルーチンを呼び出さない 場合にのみ動作します; なぜならデバイス名は呼出し毎に上書きされるからです。 この警告が出ると、名前の検索が失敗し、アクセスチェックルーチンは諦めて、 安全のためだけに FALSE を返します。 (注意: アクセスチェックルーチンは Perl の stat 演算子とファイル テストについて知っているので、Perl コマンドの結果としてこの警告を見ることは ないはずです; これは内部コートが stat バッファを軽率に扱った場合にのみ 発生します。)

Can't get pipe mailbox device name

(F) VMS 特有のエラーです。 パイプとして働くメールボックスの作成後、後で使うための名前を Perl が取得できませんでした。

Can't get SYSGEN parameter value for MAXBUF

(F) VMS 特有のエラーです。 メールボックスバッファをどれくらいとるべきかを $GETSYI に 問い合わせましたが、答えが得られませんでした。

Can't "goto" into the middle of a foreach loop

(F) "goto" 文で foreach ループの中に飛び込もうとしました。 ここからそこへは行けません。 goto in perlfunc を参照してください。

Can't "goto" out of a pseudo block

(F) "goto" 文でブロックのように見えるけれども、適切な ブロックではないところから飛び出そうとしました。 これは普通 sort() ブロックやサブルーチンから飛び出そうとしたときに 起きますが、それはできません。 goto in perlfunc を参照してください。

Can't goto subroutine from a sort sub (or similar callback)

(F) "goto subroutine" 呼び出しは、sort() のための比較サブルーチンや、 (List::Util の reduce() 関数のような) 似たようなコールバックから 飛び出すことはできません。

Can't goto subroutine from an eval-%s

(F) "goto subroutine" 呼び出しは eval "string" やブロックから 飛び出すことはできません。

Can't goto subroutine outside a subroutine

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

Can't ignore signal CHLD, forcing to default

(W signal) Perl は、SIGCHLD (SIGCLD としても知られます) シグナルが 無効化された状態で実行されていることを検出しました。 このシグナルが無効化されると子プロセスの終了ステータスを適切に 決定できなくなるので、Perl はシグナルをデフォルト値にリセットしました。 この状況は典型的には Perl が動作している親プログラム(cron など)が とても不注意であることを示しています。

Can't "last" outside a loop block

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

Can't linearize anonymous symbol table

(F) Perl はパッケージのメソッド解決順序 (MRO) を計算しようとしましたが、 パッケージ stash に名前がないので失敗しました。

Can't load '%s' for module %s

(F) 読み込もうとしたモジュールは、動的拡張モジュールの読み込みに 失敗しました。 これは古い動的拡張モジュールと互換性のない perl にアップグレードしたか (これは perl のメジャーバージョン間で起きることが知られています)、 (よりあり得るのは)動的拡張モジュールがシステムにインストールされている古い バージョンのライブラリに対してビルドされているかです。 古い動的拡張モジュールをリビルドする必要があるでしょう。

Can't localize lexical variable %s

(F) 以前に "my" や "state" を使ってレキシカル変数として宣言された変数名に 対して local を使いました。 これは認められていません。 同じ名前のパッケージ変数をローカル化したい場合は、 パッケージ名で修飾してください。

Can't localize through a reference

(F) local $$ref のようなことをしましたが、Perl は現在のところこれを 扱えません; なぜなら、local() のスコープが終了した後、$ref が 指しているものの古い値を戻すとき、$ref がまだリファレンスかどうかが わからないからです。

Can't locate %s

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

Can't locate auto/%s.al in @INC

(F) 関数(またはメソッド)がオートロードを許可しているパッケージで 呼び出されましたが、オートロードする関数がありませんでした。 最も可能性のある原因は関数/メソッド名の誤記か、make install と することによるファイルの AutoSplit の失敗です。

Can't locate loadable object for module %s in @INC

(F) 読み込まれたモジュールは foo.sobar.dll のような外部 ライブラリを読み込もうとしましたが、DynaLoader モジュールは、この ライブラリの位置がわかりませんでした。 DynaLoader を参照してください。

Can't locate object method "%s" via package "%s"

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

Can't locate package %s for @%s::ISA

(W syntax) 配列 @ISA に別のパッケージ名が記されていますが、 存在していないようです。

Can't locate PerlIO%s

(F) 例えば、open(FH, ">:nosuchlayer", "somefile") のように、 open() で 存在しない PerlIO 層を使おうとしました。

Can't make list assignment to \%ENV on this system

(F) %ENV へのリスト代入はいくつかのシステム、特に VMS では 対応していません。

Can't modify %s in %s

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

Can't modify nonexistent substring

(P) substr() への代入を行なう内部ルーティンに NULL が渡されました。

Can't modify non-lvalue subroutine call

(F) 左辺値コンテキストとして使うサブルーチンは、そのように 宣言しなければなりません; Lvalue subroutines in perlsub を参照してください。

Can't msgrcv to read-only var

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

Can't "next" outside a loop block

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

Can't open %s: %s

(S inplace) <> ファイルハンドルによる暗黙的なファイルオープンまたは -n-p コマンドラインスイッチによる暗黙的な、あるいは 明示的なファイルオープンが表示した理由によって失敗しました。 通常、これはコマンドラインで指定したファイルの読み込み権限が無いときに起こります。

Can't open a reference

(W io) 3 引数の open() の構文を使ってスカラリファレンスを読み込みまたは 書き込みのために開こうとしました:

    open FH, '>', $ref;

しかしこのバージョンの perl は perlio なしでコンパイルされていて、 この形式の open は対応していません。

Can't open bidirectional pipe

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

Can't open error file %s as stderr

(F) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 コマンドラインで書き込みのために '2>' や '2>>' の後に指定された ファイルを開けませんでした。

Can't open input file %s as stdin

(F) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 コマンドラインで読み込みのために '<' の後に指定された ファイルを開けませんでした。

Can't open output file %s as stdout

(F) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 コマンドラインで書き込みのために '>' や '>>' の後に指定された ファイルを開けませんでした。

Can't open output pipe (name: %s)

(P) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 標準出力としてデータを送るパイプを開けませんでした。

Can't open perl script%s

(F) 指定したスクリプトが、表示した理由によってオープンできませんでした。

#! を使うスクリプトをデバッグしていて、普通はシェルの $PATH 検索に 頼っている場合は、-S オプションを付けることで perl が検索するようになり、 パスや `which $scriptname` をタイプする必要がなくなります。

Can't read CRTL environ

(S) VMSに固有の警告です。 Perl は %ENV の要素を CRTL の内部環境配列から読み込もうとしましたが、 配列がないことを発見しました。 CRTL が環境をどこに間違えて置いたかを探し出すか、PERL_ENV_TABLE を 定義して(perlvms を参照してください)環境を検索しないようにする 必要があります。

Can't "redo" outside a loop block

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

Can't remove %s: %s, skipping file

(S inplace) バックアップを作成せずにその場編集することを要求しました。 Perl は変更したファイルで置き換えるために元のファイルを削除することが できませんでした。 ファイルは変更されずに残されます。

Can't rename %s to %s: %s, skipping file

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

Can't reopen input pipe (name: %s) in binary mode

(P) VMS に固有のエラーです。 Perl は標準入力がパイプであると考えて、バイナリデータを受け入れるために 再オープンしようとしました。 悲しいかな、それは失敗しました。

Can't resolve method `%s' overloading `%s' in package `%s'

(F|P) (サブルーチンのリファレンスではなく)メソッド名で指定された オーバーロードの解決でのエラー: そのようなメソッドはパッケージ経由で 呼び出せません。 もしメソッド名が ??? なら、内部エラーです。

Can't reswap uid and euid

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

Can't return %s from lvalue subroutine

(F) Perl が、左辺値として使われるサブルーチンから(一時的や 読み込み専用のような)不正な左辺値が返されようとしているのを 検出しました。 これはできません。

Can't return outside a subroutine

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

Can't return %s to lvalue scalar context

(F) 左辺値サブルーチンから配列やハッシュ全体を返そうとしましたが、 一つだけの値を返そうとしていると Perl が考えるような方法でサブルーチンを 呼び出しました。 おそらく、Perl にこの呼び出しがリストコンテキストであると伝えるために、 サブルーチン呼び出しの周りにかっこを書いているのでしょう。

Can't stat script "%s"

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

Can't swap uid and euid

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

Can't take log of %g

(F) 実数に対しては、負数や 0 に対する対数を取ることはできません。 しかし、もし本当に負数に対してそのようなことをしたいのなら、 Perl 標準になっている Math::Complex パッケージがあります。

Can't take sqrt of %g

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

Can't undef active subroutine

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

Can't unshift

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

Can't upgrade %s (%d) to %d

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

Can't use anonymous symbol table for method lookup

(F) メソッド検索を行う内部ルーチンが、名前のないシンボルテーブルを 扱いました。 シンボルテーブルは、例えば undef %Some::Package:: のように未定義の stash によって無名となります。

Can't use an undefined value as %s reference

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

Can't use bareword ("%s") as %s ref while "strict refs" in use

(F) "strict refs" によって、ハードリファレンスのみが許可されます。 シンボリックリファレンスは許可されません。 perlref を参照してください。

Can't use %! because Errno.pm is not available

(F) 最初に %! ハッシュが使われるときに、 perl は自動的に Errno.pm モジュールを読み込みます。 Errno モジュールは $! errno 値のシンボリック名を提供するために %! ハッシュと tie されることになります。

Can't use both '<' and '>' after type '%c' in %s

(F) 一つの型を同時にビッグエンディアンとリトルエンディアンの両方に 強制することはできないので、この修飾子の組み合わせは許可されません。 pack in perlfunc を参照してください。

Can't use %s for loop variable

(F) 単純スカラ変数だけが、foreach のループ変数として 使用することができます。

Can't use global %s in "%s"

(F) マジカル変数を、字句スコープ変数として宣言しようとしました。 これが許されていないのは、マジカル変数は(グローバル変数という名前の) 1 か所だけに結び付けられているので、マジカル変数のように見えるけれども そうではない変数がプログラム中にあると、著しく混乱させるからです。

Can't use '%c' in a group with different byte-order in %s

(F) 既にバイト順修飾子が付けられているグループの内側で異なったバイト順を 強制しようとしました。 例えば、ビッグエンディアングループの中にある型をリトルエンディアンに 強制することはできません。

Can't use "my %s" in sort comparison

(F) グローバル変数 $a と $b はソート比較のために予約されています。 $a か $b を <=> か cmp 演算子と同じ行に記述しましたが、その変数は その前にレキシカル変数として宣言されています。 ソート変数をパッケージ名で修飾するか、レキシカル変数の名前を 変更してください。

Can't use %s ref as %s ref

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

Can't use string ("%s") as %s ref while "strict refs" in use

(F) "strict refs" によって、ハードリファレンスのみが許可されます。 シンボリックリファレンスは許可されません。 perlref を参照してください。

Can't use subscript on %s

(F) コンパイラが大かっこで囲われた式を添字として解釈しようとしました。 しかし、大かっこの左側はハッシュか配列のリファレンスやその他の 添字化できるもののようには見えない式です。

Can't use \%c to mean $%c in expression

(W syntax) 通常の式では、バックスラッシュは引数へのリファレンスを作る 単項演算子です。 マッチした部分文字列への後方参照を示すためのバックスラッシュの使用は 正規表現パターンの一部の場合にのみ有効です。 通常の Perl コードの中でこれをしようとすると、SCALAR(0xdecaf) のように 表示される値を生成します。 代わりに $1 の形を使ってください。

Can't use "when" outside a topicalizer

(F) foreach ブロックや given ブロックの内側以外で when() ブロックを 使いました。 (このエラーは when ブロックから終了したときに発生するので、マッチングに 失敗したときや、明示的な continue を使った場合はこのエラーは 発生しません。)

Can't weaken a nonreference

(F) リファレンスではない何かを弱めようとしました。 リファレンスだけが弱めることができます。

Can't x= to read-only value

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

Character in 'C' format wrapped in pack

(W pack) 以下のように書きましたが:

    pack("C", $x)

$x は 0 より小さいか 255 より大きいです; "C" フォーマットは ネイティブ OS 文字 (ASCII, EBCDIC など) のエンコーディングだけに 対応していて、Unicode 文字は対応していません; それで、Perl は以下のように意味しているかのように振舞います:

    pack("C", $x & 255)

Unicode コードポイントを pack したい場合は、代わりに "U" フォーマットを 使ってください。

Character in 'W' format wrapped in pack

(W pack) 以下のように書きましたが:

    pack("U0W", $x)

$x が 0 より小さいか 255 より大きいです。 しかし、U0-モードは全ての値が [0, 255] の範囲にあることを想定してるので、 Perl は以下のように振る舞います:

    pack("U0W", $x & 255)
Character in 'c' format wrapped in pack

(W pack) 以下のように書きましたが:

    pack("c", $x)

$x は -128 より小さいか 127 より大きいです; "c" フォーマットは ネイティブ OS 文字 (ASCII, EBCDIC など) のエンコーディングだけに 対応していて、Unicode 文字は対応していません; それで、Perl は以下のように意味しているかのように振舞います:

    pack("c", $x & 255);

Unicode コードポイントを pack したい場合は、代わりに "U" フォーマットを 使ってください。

Character in '%c' format wrapped in unpack

(W unpack) 以下のようなことをしましたが:

   unpack("H", "\x{2a1}")

ここでフォーマットはバイト(値が 256 より小さい文字)を想定していますが、 文字の中により大きな値のものがあります。 Perl は、あなたが以下のようにしたかのように、256 で割った余りを文字の 値として使います:

   unpack("H", "\x{a1}")
Character(s) in '%c' format wrapped in pack

(W pack) 以下のようなことをしましたが:

   pack("u", "\x{1f3}b")

ここでフォーマットはバイト(値が 256 より小さい文字)列を想定していますが、 文字の中により大きな値のものがあります。 Perl は、あなたが以下のようにしたかのように、256 で割った余りを文字の 値として使います:

   pack("u", "\x{f3}b")
Character(s) in '%c' format wrapped in unpack

(W unpack) 以下のようなことをしましたが:

   unpack("s", "\x{1f3}b")

ここでフォーマットはバイト(値が 256 より小さい文字)列を想定していますが、 文字の中により大きな値のものがあります。 Perl は、あなたが以下のようにしたかのように、256 で割った余りを文字の 値として使います:

   unpack("s", "\x{f3}b")
close() on unopened filehandle %s

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

closedir() attempted on invalid dirhandle %s

(W io) 閉じようとしたディレクトリハンドルは既に閉じられているか、実際には ディレクトリハンドルではありません。 制御フローをチェックしてください。

Code missing after '/'

(F) テンプレートが '/' で終わっています。 スラッシュの後には他のテンプレートコードが必須です。 pack in perlfunc を参照してください。

%s: Command not found

(A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

Compilation failed in require

(F) Perl は require 文で指定されたファイルをコンパイルできませんでした。 Perl は、コンパイルを直ちに停止させるほど厳しいエラーに遭遇しなかった ときに、この一般的なメッセージを使います。

Complex regular subexpression recursion limit (%d) exceeded

(W regexp) 正規表現エンジンはバックトラックが要求される複雑な状況では 再帰を使用します。 再帰の深さは 32766、またはスタックを任意に増やせないアーキテクチャでは おそらくもっと小さい値に制限されています。 (「単純な」または「中くらいの」状況では再帰なしで扱われるので、制限は ありません。) 調べる文字列を短くしてみてください; 正規表現エンジンではなく (while などの) Perl コードを使ってループするか、 あるいは正規表現をより単純にしたり、バックトラックが少なくなるように 書き換えてください。 (Mastering Regular Expressions の情報については perlfaq2 を 参照してください。)

cond_broadcast() called on unlocked variable

(W threads) スレッドが有効になっているプログラムで、ロックされていない 変数に対して cond_broadcast() を呼び出そうとしました。 cond_broadcast() 関数は cond_wait() で待ち状態になっている他のスレッドを 起こすために使います。 他のスレッドが待ち状態になる前にこのシグナルが送られないことを確実に するために、シグナルを送るスレッドはまず変数をロックするために待ち状態に 入るのが普通です。 このロックの試みは他のスレッドが cond_wait() に入ることで、ロックを 手放した場合にのみ成功します。

cond_signal() called on unlocked variable

(W threads) スレッドが有効になっているプログラムで、ロックされていない 変数に対して cond_signal() を呼び出そうとしました。 cond_signal() 関数は cond_wait() で待ち状態になっている他のスレッドを 起こすために使います。 他のスレッドが待ち状態になる前にこのシグナルが送られないことを確実に するために、シグナルを送るスレッドはまず変数をロックするために待ち状態に 入るのが普通です。 このロックの試みは他のスレッドが cond_wait() に入ることで、ロックを 手放した場合にのみ成功します。

connect() on closed socket %s

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

Constant(%s)%s: %s

(F) パーサは、オーバーロードされた定数を定義しようとしたときか、 \N{...} エスケープで指定された文字名を探そうとしたときに 非一貫性を発見しました。 おそらく対応する overloadcharnames のプラグマの読み込みを 忘れたのでは? charnamesoverload を参照してください。

Constant(%s)%s: %s in regex; marked by <-- HERE in m/%s/

(F) パーサが、\N{...} エスケープで指定された文字名の検索中に矛盾を 発見しました。 おそらく対応する charnames プラグマの読み込みを忘れたのでは? charnames を参照してください。

Constant is not %s reference

(F) (おそらく use constant プラグマを使って宣言した) 定数値が デリファレンスされましたが、間違った型のリファレンスになりました。 このメッセージは想定されたリファレンスの型を示しています。 これは普通定数値をデリファレンスするときの文法エラーを示しています。 Constant Functions in perlsubconstant を参照してください。

Constant subroutine %s redefined

(S) 以前にインライン化できる形であったサブルーチンを 再定義しました。 コメントと回避策については Constant Functions in perlsub を 参照してください。

Constant subroutine %s undefined

(W misc)以前にインライン化できる形であったサブルーチンを 未定義化しました。 コメントと回避策については Constant Functions in perlsub を 参照してください。

Copy method did not return a reference

(F) "=" をオーバーロードしたメソッドはバグっています。 overload/Copy Constructor を参照してください。

CORE::%s is not a keyword

(F) CORE:: 名前空間は Perl キーワードとして予約されています。

corrupted regexp pointers

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

corrupted regexp program

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

Corrupt malloc ptr 0x%lx at 0x%lx

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

Count after length/code in unpack

(F) unpack のテンプレートとしてカウント長文字列を示していますが、 文字列の長さも明示的に指定しています。 pack in perlfunc を参照してください。

Deep recursion on subroutine "%s"

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

この閾値は、C プリプロセッサマクロ PERL_SUB_DEPTH_WARN を希望の値に 設定して perl バイナリを再コンパイルすることで、100 から変更できます。

defined(@array) is deprecated

(D deprecated) defined() は未定義の スカラ 値を調べるので、配列に 使っても普通は無意味です。 配列が空かどうかを調べたい場合は、例えば単に if (@array) { # not empty } としてください。

defined(%hash) is deprecated

(D deprecated) defined() は未定義の スカラ 値を調べるので、ハッシュに 使っても普通は無意味です。 ハッシュが空かどうかを調べたい場合は、例えば単に if (%hash) { # not empty } としてください。

%s defines neither package nor VERSION--version check failed

(F) "use Module 42" のようなことをしましたが、Module ファイルに パッケージ定義がないか、$VERSION がありませんでした。

Delimiter for here document is too long

(F) <<FOO のようなヒアドキュメント構造で、ラベル FOO が Perl が扱うには長すぎました。 このエラーを起こすようなコードを書くには相当ひねくれている必要があります。

Deprecated use of my() in false conditional

(D deprecated) my $x if 0 のような定義を行いました。 これは、宣言に偽の条件を含んでいるとスコープから外れた際にレキシカル変数が クリアされないという、Perl に長い間存在したバグです。 ある種の静的変数を実現するためにこのバグを悪用する人々もいます。 私たちはこのバグを修正するつもりなので、人々がこの振る舞いに依存して ほしくありません。 関数外の別のブロックで変数を宣言することで似たような静的な効果を 達成できます。 例えば:

    sub f { my $x if 0; return $x++ }

これは以下のようにします:

    { my $x; sub f { return $x++ } }

perl 5.9.4 から、一度だけ初期化されるレキシカルとして state 変数も 使えます (feature を参照してください):

    sub f { state $x; return $x++ }
DESTROY created new reference to dead object '%s'

(F) DESTROY() メソッドが、DESTROY したばかりのオブジェクトへの 新しいリファレンスを作りました。 Perl は混乱して、不明瞭なリファレンスを作るよりは中断することを選びました。

Did not produce a valid header

"Server error" を参照してください。

%s did not return a true value

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

(Did you mean &%s instead?)

おそらく import したサブルーチン &FOO を $FOO として 参照したようなことでしょう。

(Did you mean "local" instead of "our"?)

(W misc) "our" 宣言されたグローバル変数を local 化しないことを 忘れないで下さい。 これをもう一度同じレキシカルスコープで宣言していますが、 不必要でしょう。

(Did you mean $ or @ instead of %?)

(W) おそらく $hash{$key} か @hash{@keys} としたいときに %hash{$key} と したのでしょう。 あるいは、単に %hash としたくてやりすぎたのでしょう。

Died

(F) die() に空文字列を渡した(die "" と等価です)か、引数なしで 呼び出して、$@$_ が空でした。

Document contains no data

"Server error" を参照してください。

%s does not define %s::VERSION--version check failed

(F) "use Module 42" のようなことをしましたが、Module は $VERSION を 定義していません。

'/' does not take a repeat count

(F) '/' の直後には繰り返し数を指定できません。 pack in perlfunc を参照してください。

Don't know how to handle magic of type '%s'

(P) マジカル変数の内部処理がおかしくなっています。

do_study: out of memory

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

(Do you need to predeclare %s?)

(S syntax) これは "%s found where operator expected" メッセージと共に 表示される教育的な推測です。 これはしばしばサブルーチンやモジュール名がまだ宣言される前に参照されている ことを意味します。 これはファイル内部での順番のためであったり、"sub", "package", "require", "use" 文がないためであったりします。 もしまだ定義されていないものを参照したい場合、現在位置より前に実際に サブルーチンやパッケージを定義する必要はありません。 空の "sub foo;" や "package FOO;" を「前方」宣言として使えます。

dump() better written as CORE::dump()

(W misc) 古いものである dump() 組み込み関数を、CORE::dump() と いうように完全修飾せずに使いました。 おそらくこれはタイプミスです。 dump in perlfunc を参照してください。

dump is not supported

(F) このマシンは dump/undump に対応していません。

Duplicate free() ignored

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

Duplicate modifier '%c' after '%c' in %s

(W) pack テンプレートで、一つの型の後に同じ修飾子を複数指定しました。 pack in perlfunc を参照してください。

elseif should be elsif

(S) Larry は "elseif" というのは醜いと考えたので、Perl にはこのキーワードは ありません。 このコードは引き続くブロックによって返されたクラスの "elseif" メソッドを 呼び出そうとしていると解釈されます。 これは望んでいることではないはずです。

Empty %s

(F) \p\P は、perlunicodeperlre に記述されているように、 名前付き Unicode プロパティを導入するために使われます。 正規表現の中で、\p\P をプロパティ名の指定なしに使いました。

entering effective %s failed

(F) use filetest プラグマを使っている間に、 実と実効の UID や GID の切り替えに失敗しました。

%ENV is aliased to %s

(F) 汚染モードで動作していて、%ENV 変数が他のハッシュへのエイリアスに なっているので、これ以上プログラムの環境の状態を反映しません。 これは潜在的にはセキュアではありません。

Error converting file specification %s

(F) VMS に固有のエラーです。 Perl はファイル仕様を VMS 式か Unix 式かどちらかで扱わなければならないので、 直接操作しなければならない場合は変換します。 不正なファイル仕様を Perl に渡したか、変換ルーチンが扱えないパターンを 発見したかです。 ちぇっ。

%s: Eval-group in insecure regular expression

(?{ ... }) ゼロ幅アサーションを含む正規表現をコンパイルしようと したときに、Perl は汚染されたデータを検出しました; これは安全ではありません。 (?{ code }) in perlreperlsec を参照してください。

%s: Eval-group not allowed at runtime, use re 'eval'

(F) Perl が実行時に、変数展開された値を含んでいて、 (?{ ... }) ゼロ幅アサーションを含む正規表現をコンパイルしようとしました。 これはセキュリティ上の危険があるので、許可されていません。 どうしても実行したい場合は、実行時に変数展開された文字列から パターンを作成して、それを eval() の中で使うことで実行できます。 (?{ code }) in perlre を参照してください。

%s: Eval-group not allowed, use re 'eval'

(F) 正規表現に (?{ ... }) ゼロ幅アサーションを含んでいますが、 この構造は use re 'eval' プラグマが有効の場合にのみ許可されます。 (?{ code }) in perlre を参照してください。

EVAL without pos change exceeded limit in regex; marked by <-- HERE in m/%s/

(F) テキストを一切読み込むことなく、EVAL 呼び出しのネストが多すぎる パターンを使いました。 テキストを読み込むようにパターンを再構築してください。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Excessively long <> operator

(F) <> 演算子の内容は Perl 識別子の最大サイズを越えることはできません。 単にファイル名の長いリストをグロブしようとしただけなら、glob() 演算子を 使うか、ファイル名を変数に入れて、それをグロブしてください。

exec? I'm not *that* kind of operating system

(F) exec 関数は MacPerl には実装されていません。 perlport を参照してください。

Execution of %s aborted due to compilation errors

(F) Perl のコンパイルが失敗したときの、最後のまとめメッセージです。

Exiting eval via %s

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

Exiting format via %s

(W exiting) goto やループ制御文といった、異例な形でフォーマットを 終了しました。

Exiting pseudo-block via %s

(W exiting) (ソートブロックやサブルーチンのような) 特別なブロック構造を、 goto やループ制御文といった異例な方法で終了しました。 sort in perlfunc を参照してください。

Exiting subroutine via %s

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

Exiting substitution via %s

(W exit) return や goto やループ制御文など、おかしな方法で置換を 抜けました。

Explicit blessing to '' (assuming package main)

(W misc) リファレンスを長さゼロの文字列に bless しました。 これはリファレンスをパッケージ main に bless する効果があります。 これは普通あなたが望んでいることではありません。 (bless($ref, $p || 'MyPackage'); のように) デフォルトターゲット パッケージを提供することを考慮してください;

%s: Expression syntax

(A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

%s failed--call queue aborted

(F) UNITCHECK, CHECK, INIT, END サブルーチンを実行中にトラップされていない 例外が発生しました。 このようなルーチンのキューの残りの処理は途中で終了しました。

False [] range "%s" in regex; marked by <-- HERE in m/%s/

(W regexp) 文字クラス範囲の先頭とと末尾は、\d[:alpha:] のような 他の文字クラスではなく、リテラル文字でなければなりません。 間違った範囲の "-" はリテラルの "-" と解釈されます。 "-" を "\-" とクォートすることを考慮してください。 <-- HERE は正規表現の中で問題が発見された位置を示します。 perlre を参照してください。

Fatal VMS error at %s, line %d

(P) VMS に固有のエラーです。 何か都合の悪いことが VMS システムサービスか RTL ルーチンで起こりました; Perl の終了コードに詳細が示されています。 "at %s" のファイル名と "line %d" の行番号は、問題の起こった Perl ソースコードの位置を示しています。

fcntl is not implemented

(F) このマシンでは、fcntl() が実装されていないように見えます。 PDP-11 か何かでしょうか。

FETCHSIZE returned a negative value

(F) tie された配列に対して負の番号の要素を要求されました; これは不可能です。

Field too wide in 'u' format in pack

(W pack) uuencode された文字列の各行が、63 以上にエンコードできない 長さ識別子から始まっています。 それで、これより長い行の長さを問い合わせるところがありません。 Perl はフォーマットとして u63 が指定されたかのように振る舞います。

Filehandle %s opened only for input

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

Filehandle %s opened only for output

(W io) 書き込み専用のファイルハンドルから読み込もうとしました。 読み書きできるファイルハンドルにしたい場合は、 ファイルのオープン時に "<" や何もなしではなく、 "+<" か "+>" か "+>>" をつける必要があります。 読み込み専用にしたい場合は、"<" を使ってください。 open in perlfunc を参照してください。 他の可能性としては、ファイル記述子 0 (STDIN としても知られています) を 出力用に開こうとした場合(おそらくその前に STDIN を閉じたのでは?)です。

Filehandle %s reopened as %s only for input

(W io) STDOUT または STDERR として使われていたのと同じファイルハンドル ID の ファイルハンドルを読み込み用に開こうとしました。 これは、以前 STDOUT または STDERR を閉じたときに起きます。

Filehandle STDIN reopened as %s only for output

(W io) STDIN として使われていたのと同じファイルハンドル ID の ファイルハンドルを書き込み用に開こうとしました。 これは、以前 STDIN を閉じたときに起きます。

Final $ should be \$ or $name

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

flock() on closed filehandle %s

(W closed) flock() しようとしたファイルハンドルはその前に既に 閉じられています。 制御フローをチェックしてください。 flock() はファイルハンドルを操作します。 同じ名前のディレクトリハンドルに flock() しようとしていませんか?

Format not terminated

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

Format %s redefined

(W redefine) フォーマットを再定義しました。 この警告を止めるには以下のようにしてください。

    {
        no warnings 'redefine';
        eval "format NAME =...";
    }
Found = in conditional, should be ==

(W) 以下のようにしています:

    if ($foo = 123)

以下のようにすべきです:

    if ($foo == 123)

(あるいは似たようなこと)。

%s found where operator expected

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

gdbm store returned %d, errno %d, key "%s"

(S) GDBM_File 拡張モジュールが、値の設定に失敗したという警告です。

gethostent not implemented

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

get%sname() on closed socket %s

(W closed) 閉じたソケットに対してソケットやピアソケット名を取得しようと しました。 socket() の呼び出し時に、返却値のチェックを忘れたのではありませんか?

getpwnam returned invalid UIC %#o for user "%s"

(S) VMS に固有の警告です。 getpwnam 演算子の基礎となる sys$getuai 呼び出しで 不正な UIC が返されました。

getsockopt() on closed socket %s

(W clockd) クローズされたソケットのソケットオプションを取得しようとしました。 socket() の呼び出し時に、返却値のチェックを忘れたのではありませんか。 getsockopt in perlfunc を参照してください。

Global symbol "%s" requires explicit package name

(F) "use strict" か "use strict vars" が指定されていますので、すべての変数は ("my" か "state" を使った) レキシカルスコープの変数か、"our" を使って事前に 宣言するか、グローバル変数がどのパッケージのものかを ("::" を使って)、 明示的に修飾しなくてはなりません。

glob failed (%s)

(W glob) glob<*.c> のために使われる外部プログラムに何か問題が 発生しました。 通常、これは外部プログラムが失敗して非 0 のステータスで終了するような glob パターンが渡されたことを意味します。 このメッセージがコアダンプを引きおこした異常終了を示している場合、 csh (C シェル) が壊れていることを意味しているかもしれません。 もしそうなら、config.sh の全ての csh 関連の変数を変更するべきです: もし tcsh があるなら、(full_csh='/usr/bin/tcsh' のように) tcsh を 参照するように変数を設定します; さもなければ、関連する全ての変数を空にする(例外として d_csh'undef' に設定するべきです)ことで、Perl は csh がないものと考えます。 どちらの場合でも、config.sh を修正した後、./Configure -S を実行して Perl を再ビルドしてください。

Glob not terminated

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

Got an error from DosAllocMem

(P) OS/2 に固有のエラーです。 もっともありそうなのは廃止されたバージョンの Perl を使っていることで、 どちらにしてもこのエラーは起きないはずです。

goto must have label

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

()-group starts with a count

(F) () グループが繰り返し数で始まっています。 繰り返し数は、テンプレート文字か () グループの後に続くことを 想定しています。 pack in perlfunc を参照してください。

%s had compilation errors

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

Had to create %s unexpectedly

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

Hash %%s missing the % in argument %d of %s()

(D deprecated) 本当に古い Perl では、ハッシュ名の % を省略できる場所が ありました。 省略はしないようにしてください。

%s has too many errors

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

Hexadecimal number > 0xffffffff non-portable

(W portable) 指定した 16 進数が 2**32-1 (4294967295) より大きいので、 システム間で移植性がありません。 移植性に関するさらなる考察については perlport を参照してください。

Identifier too long

(F) Perl は識別子(変数名や関数名など)について、単純な名前については およそ 250 文字に、($A::B のような)複合名についてはもう少し長い長さに 制限しています。 この Perl の制限を越えました。 将来のバージョンの Perl ではこれらの恣意的な制限はなくなるでしょう。

Ignoring %s in character class in regex; marked by <-- HERE in m/%s/

(W) 名前付き Unicode 文字エスケープ (\N{...}) が複数文字か長さ 0 の シーケンスを返しました。 文字クラスでこのようなエスケープが使われた場合、振る舞いは未定義です。 正しいエスケープを使っているか、および正しい文字名ハンドラがスコープ内に あるかをチェックしてください。

Illegal binary digit %s

(F) 2 進数として 0 と 1 以外の数値を使っています。

Illegal binary digit %s ignored

(W digit) 2 進数として 0 と 1 以外の数値を使おうとしたのでしょう。 2 進数の解釈は問題のある数値の手前で停止しました。

Illegal character %s (carriage return)

(F) Perl は普通プログラムテキスト中の復帰文字をその他の空白と同様に 扱いますので、Perl を標準のオプションでビルドした場合はこのエラーを 見ることは決してないはずです。 どういうわけか、お使いの Perl はこの機能なしでビルドされているようです。 Perl の管理者に問い合わせてください。

Illegal character in prototype for %s : %s

(W syntax) プロトタイプ宣言に無効な文字が見つかりました。 プロトタイプでの有効な文字は、$, @, %, *, ;, [, ], &, \ です。

Illegal declaration of anonymous subroutine

(F) 無名サブルーチンを作るために sub を使ったときは、 常にコードのブロックを指定しなければなりません。 perlsub を参照してください。

Illegal declaration of subroutine %s

(F) サブルーチンが正しく宣言されていません。 perlsub を参照してください。

Illegal division by zero

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

Illegal hexadecimal digit %s ignored

(W digit) 16 進数として 0 - 9, A - F, a - f 以外の文字を使おうとしました。 16 進数の解釈は不正な文字の手前で停止しました。

Illegal modulus zero

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

Illegal number of bits in vec

(F) vec() のビット数 (第三引数) は 1 から 32 (プラットフォームが 対応している場合は 64) までの、2 のべき乗でなければなりません。

Illegal octal digit %s

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

Illegal octal digit %s ignored

(W digit) 8 進数で 8 か 9 を使おうとしたのでしょう。 8 進数の解釈は 8 か 9 の手前で停止しました。

Illegal switch in PERL5OPT: %s

(X) PERL5OPT 環境変数で設定できるのは -[CDIMUdmtw] の オプションだけです。

Ill-formed CRTL environ value "%s"

(W internal) VMS 固有の警告です。 Perl は CRTL の内部環境配列を読み込もうとしましたが、キーを値と 分離するために使われている = デリミタのない要素に遭遇しました。 この要素は無視しました。

Ill-formed message in prime_env_iter: |%s|

(W internal) VMS 固有の警告です。 Perl は %ENV を反復する準備したときに論理名や CLI シンボル定義を 読み込もうとしましたが、キーと値の間のデリミタが見つからなかったので、 その行は無視しました。

(in cleanup) %s

(W misc) この接頭辞は普通、示されている例外が DESTROY() メソッドで 発生したことを示しています。 デストラクタは普通実行中の任意の時点で呼び出され、しばしば大量に 呼び出されるので、この警告は同じメッセージが繰り返されないように、 何回失敗しても一度だけ発生します。

G_KEEPERR フラグを使って発行(dispatch)したユーザーコールバックに失敗した 場合にもこの警告が出ることがあります。 G_KEEPERR in perlcall を参照してください。

Inconsistent hierarchy during C3 merge of class '%s': merging failed on parent '%s'

(F) 与えられたクラスのメソッド解決順序 (MRO) が C3 に矛盾していますが、 このクラスの C3 MRO を有効にしました。 さらなる情報については mro 内の C3 に関する文書を参照してください。

In EBCDIC the v-string components cannot exceed 2147483647

(F) EBCDIC 特有のエラーです。 内部的に、v 文字列は Unicode 文字ポイントとして保管されていて、 EBCDIC では UTF-EBCDIC でとしてエンコードされています。 UTF-EBCDIC エンコーディングでは、コードポイントは 2147483647 (0x7FFFFFFF) 以下に制限されます。

Infinite recursion in regex; marked by <-- HERE in m/%s/

(F) 入力テキストを読み込むことなく自分自身を参照するパターンを使いました。 再帰的なパターンが、テキストを読み込むか失敗するかを確実に行うように、 パターンをチェックするべきです。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Initialization of state variables in list context currently forbidden

(F) 現在のところ、"state" の実装は、スカラコンテキストでのスカラ変数の 初期化のみが許されています。 state ($a) = 42state $a = 42 のように、リストコンテキストから スカラコンテキストに書き換えてください。 state (@a) = foo() のような構文は perl の将来のリリースで 対応されるでしょう。

Insecure dependency in %s

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

Insecure directory in %s

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

Insecure $ENV{%s} while running %s

(F) $ENV{PATH}, $ENV{IFS}, $ENV{CDPATH}, $ENV{ENV}, $ENV{BASH_ENV}, $ENV{TERM} のいずれかがユーザーによって提供された (あるいは提供された可能性のある)データの場合、setuid や setgid された スクリプトでは system(), exec(), パイプされる open を 使うことはできません。 スクリプトはパスとして、信頼の置けるデータを使った、既知の値を セットしなければなりません。 perlsec を参照してください。

Integer overflow in %s number

(W overflow) リテラルまたは hex()oct() の引数として指定された 16 進、 8 進、2 進数は実行しているアーキテクチャには大きすぎるので、浮動小数点数に 変換されました。 32 ビットアーキテクチャでは、オーバーフローせずに表現できる 16 進、8 進 2 進数はそれぞれ 0xFFFFFFFF, 037777777777, 0b11111111111111111111111111111111 です。 Perl は全ての数値を内部では浮動小数点表現に透過的に変換することに 注意してください -- 引き続く操作によって精度が失われることがあります。

Integer overflow in format string for %s

(F) printf()sprintf() のフォーマット文字列で指定されたインデックスや 幅が大きすぎます。 数値はあなたのアーキテクチャの整数のサイズをオーバーフローしないように しなければなりません。

Integer overflow in version

(F) バージョン初期化の一部が、アーキテクチャの整数のサイズより 大きすぎます。 バージョンとして典型的には 2**32 を超える要素を使おうとするための合理的な 理由がないので、これは警告ではありません。 これは普通、100/9 のようなおかしな数値演算をバージョンとして 使おうとしたことによります。

Internal disaster in regex; marked by <-- HERE in m/%s/

(P) 正規表現解析部に何か悪いことが起こりました。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。

Internal inconsistency in tracking vforks

(S) VMS 特有の警告です。 Perl は forkexec を呼び出した回数を数えています; これは現在の exec 呼び出しが現在のスクリプトかサブプロセスかどちらに 影響を与えるかを決定するためです(perlvms/"exec LIST" を 参照してください)。 どういうわけか、このカウントがおかしくなったので、Perl はこの exec が Perl スクリプトを終了させて指定されたコマンドを実行する要求であると 仮定して、そのように扱いました。

Internal urp in regex; marked by <-- HERE in m/%s/

(P) 正規表現解析部に何か間違ったことが起こりました。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。

%s (...) interpreted as function

(W syntax) リスト演算子の直後に括弧を置くと、括弧内にあるリスト演算子引数を 持つ関数になる、という規則が適用されました。 Terms and List Operators (Leftward) in perlop を参照してください。

Invalid %s attribute: %s

示されたサブルーチンや変数の属性は Perl やユーザー提供のハンドラで認識されませんでした。 attributes を参照してください。

Invalid %s attributes: %s

示されたサブルーチンや変数の属性は Perl やユーザー提供のハンドラで認識されませんでした。 attributes を参照してください。

Invalid conversion in %s: "%s"

(W printf) Perl は指定されたフォーマット変換が認識できませんでした。 sprintf in perlfunc を参照してください。

Invalid escape in the specified encoding in regex; marked by <-- HERE in m/%s/

(W regexp) (例えば \xHH のような)数値エスケープの 256 より小さい値が、 エンコーディングプラグマで指定した変換によって 1 つの文字に対応していません。 エスケープは代わりに REPLACEMENT CHARACTER (U+FFFD) に置き換えられます。 <-- HERE で正規表現のどこにエスケープが発見されたかを示しています。

Invalid mro name: '%s'

(F) mro::set_mro("classname", "foo") または use mro 'foo' を使おうと しましたが、foo は有効なメソッド解決順序 (MRO) ではありません。 (現在のところ、有効なものは dfsc3 だけです)。 mro を参照してください。

Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/

(F) 文字クラスに指定した範囲の最小値が、最大値よりも大きくなっています。 ひとつの可能性としては、末尾の \x{} から {} を 忘れているということです - 中かっこなしの \xff までにしか なりません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Invalid range "%s" in transliteration operator

(F) tr/// や y/// の演算子での範囲指定で、最大の文字より最小の文字の方が 大きいです。 perlop を参照してください。

Invalid separator character %s in attribute list

(F) 属性リストの要素の間にコロンと空白以外のものがあります。 直前の属性がかっこ付きのパラメータリストの場合、おそらくリストが 予定より早く終端されています。 attributes を参照してください。

Invalid separator character %s in PerlIO layer specification %s

(W layer) 層を Perl I/O システムに押し込むときに、層リストの要素の間に コロンと空白以外のものがありました。 直前の属性がかっこ付きパラメータリストを持つ場合、おそらくリストの 終端が早すぎるのでしょう。

Invalid type '%s' in %s

(F) 与えられた文字は有効な pack や unpack の型ではありません。 pack in perlfunc を参照してください。 (W) 与えられた文字は有効な pack や unpack の型ではありませんが、暗黙に 無視されました。

Invalid version format (multiple underscores)

(F) バージョン文字列には、このバージョンがベータリリースであることを 示すための下線が最大 1 つまで含むことができます。 許されるバージョンフォーマットについては version を参照してください。

Invalid version format (underscores before decimal)

(F) バージョン文字列では、オプションの下線の後に数字はつけられません。 許されるバージョンフォーマットについては version を参照してください。

ioctl is not implemented

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

ioctl() on unopened %s

(W unopened) 開いていないファイルハンドルに ioctl() を使おうとしました。 制御フローと引数の数をチェックしてください。

IO layers (like "%s") unavailable

(F) この Perl は PerlIO を使うように設定されていないので、IO 層は使えません。 PerlIO を使うには、'useperlio' 付きで設定する必要があります。

IO::Socket::atmark not implemented on this architecture

(F) 実行されているマシンでは、システムコールでも ioctl コール(SIOCATMARK) でも sockatmark() 機能が実装されていません。

$* is no longer supported

(S deprecated, syntax) 過去のバージョンで非推奨とされた特殊変数 $* は、 5.9.0 で削除され、もはやサポートされません。 以前のバージョンの perl では $* を使うことによって文字列中の複数行 マッチングの有効無効を切り替えていました。

$* を使う代わりに、/m (とおそらく /s) 正規表現修飾子を 使うべきです。 (より古いバージョンでは: $* を真の値に設定すると全ての正規表現は /m を使って書かれたかのように振る舞っていました。)

$# is no longer supported

(S deprecated, syntax) 過去のバージョンで非推奨とされた特殊変数 $# は、 5.9.3 で削除され、もはやサポートされません。 代わりに printf/sprintf 関数を使うべきです。

`%s' is not a code reference

(W overload) overload::constant の 2 番目 (4 番目、6 番目, ...) の引数は コードリファレンスである必要があります。 無名サブルーチンか、サブルーチンへのリファレンスです。

`%s' is not an overloadable type

(W overload) オーバーロードパッケージが知らない定数型を オーバーロードしようとしました。

junk on end of regexp

(P) 正規表現の構文解析ができなくなりました。

Label not found for "last %s"

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

Label not found for "next %s"

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

Label not found for "redo %s"

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

leaving effective %s failed

(F) use filetest プラグマを使っている間に、 実と実効の UID や GID の切り替えに失敗しました。

length/code after end of string in unpack

(F) unpack する間、さらなるデータを取り出すために長さ/コードの組み合わせを unpack するときに文字列バッファが既に使い切っていました。 これにより、長さが未定義値となります。 pack in perlfunc を参照してください。

listen() on closed socket %s

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

Lookbehind longer than %d not implemented in regex m/%s/

現在のところ前方参照が扱える文字列の長さには制限があります。 この制限は将来のリリースでは緩和されるでしょう。

lstat() on filehandle %s

(W io) ファイルハンドルに lstat を実行しようとしました。 これで何をしようとしたのですか? lstat() はファイル名に対してのみ意味があります。 (Perl はファイルハンドルには代わりに fstat() を行いました。)

Lvalue subs returning %s not implemented yet

(F) 現在の実装の制限により、左辺値コンテキストで使われるサブルーチンは 配列とハッシュの値を返すことができません。 Lvalue subroutines in perlsub を参照してください。

Malformed integer in [] in pack

(F) 中かっこで数値繰り返し数を囲む場合、数値のみが許されます。 pack in perlfunc を参照してください。

Malformed integer in [] in unpack

(F) 中かっこで数値繰り返し数を囲む場合、数値のみが許されます。 pack in perlfunc を参照してください。

Malformed PERLLIB_PREFIX

(F) OS/2 固有のエラーです。 PERLLIB_PREFIX は以下のような形か:

    prefix1;prefix2

または

    prefix1 prefix2

prefix1 と prefix2 が空でない形である必要があります。 prefix1 が組み込みライブラリ検索パスのプレフィックスなら、 prefix2 は置き換えられます。 このエラーは、コンポーネントが見つからないか、長すぎる時に起こります。 perlos2 の "PERLLIB_PREFIX" を参照してください。

Malformed prototype for %s: %s

(F) 不正な形式のプロトタイプをもつ関数を使おうとしました。 関数プロトタイプの構文は、不正な文字のようなありふれたエラーについては コンパイル時にチェックされます。 より厳密なチェックは、関数が呼び出された時に実行されます。

Malformed UTF-8 character (%s)

(S utf8) (F) Perl が、UTF8 フラグがオンにも関わらず UTF-8 エンコーディング ルールに従わない文字列を検出しました。

原因の可能性の一つは、UTF-8 だと思っていたけれでもそうではなかったデータ (例えばレガシーな 8 ビットデータ)にあなた自身で UTF8 フラグをセットした ことです。 これから守るためには、Encode::decode_utf8 を使えます。

入力に :encoding(UTF-8) PerlIO 層を使うと、不正なバイトシーケンスは 寛容に扱われますが、:utf8 を使うと、フラグはデータを検証せずに設定され、 おそらく結果としてこのエラーメッセージが出力されます。

Encode/"Handling Malformed Data" も参照してください。

Malformed UTF-16 surrogate

Perl は UTF-16 エンコード文字データを読み込んでいると考えましたが、 その間に Perl が不正な Unicode サロゲートに遭遇しました。

Malformed UTF-8 string in pack

(F) UTF-8 エンコーディング規則に従わない何かを pack しようとしたので、 perl はどうやってさらに進捗させればいいかが推測できませんでした。

Malformed UTF-8 string in unpack

(F) UTF-8 エンコーディング規則に従わない何かを unpack しようとしたので、 perl はどうやってさらに進捗させればいいかが推測できませんでした。

Malformed UTF-8 string in '%c' format in unpack

(F) UTF-8 エンコーディング規則に従わない何かを unpack しようとしたので、 perl はどうやってさらに進捗させればいいかが推測できませんでした。

Maximal count of pending signals (%s) exceeded

(F) あまりにも多くのシグナルが保留中になったので Perl は中断しました。 これは普通 OS が速くシグナルを(とても高い優先順位で)配達しようとしすぎて、 perl のプロセスが安全にシグナルを処理できるところに到達するまでに必要な リソースが不足したことを示しています。 (Deferred Signals (Safe Signals) in perlipc を参照してください。)

%s matches null string many times in regex; marked by <-- HERE in m/%s/

(W) 指定したパターンは、もし、正規表現エンジンがチェックを 行なっていなければ、無限ループに陥るものです。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

"%s" may clash with future reserved word

(W) この警告は perl5 のスクリプトを perl4 インタプリタで実行しようとした ときに起きることが多いです; 特に警告された文字が "use" や "my" の場合は そうです。

% may not be used in pack

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

Method for operation %s not found in package %s during blessing

(F) 多重定義テーブルで、有効なサブルーチンに解決できない エントリを指定しようとしました。 overload を参照してください。

Method %s not permitted

"Server error" を参照してください。

Might be a runaway multi-line %s string starting on line %d

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

Misplaced _ in number

(W syntax) 数値定数の下線が、2 つの値を分離していません。

Missing argument to -%c

(F) 示されたコマンドラインスイッチの引数は、 スイッチの直後にスペースを空けないで書く必要があります。

Missing %sbrace%s on \N{}

(F) ダブルクォートされたコンテキストの中で、文字名リテラル \N{charname} の 文法が間違っています。

Missing comma after first argument to %s function

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

Missing command in piped open

(W pipe) open(FH, "| command")open(FH, "command |") の構文を 使っていますが、コマンドが指定されていないか空白です。

Missing control char name in \c

(F) ダブルクォートされた文字列が "\c" で終わっています; 制御文字名が 必要です。

Missing name in "my sub"

(F) 予約された文法である、レキシカルスコープのサブルーチンには 探すことの出来る名前が必要です。

Missing $ on loop variable

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

(Missing operator before %s?)

(S syntax)"%s found where operator expected" と共に表示される 教育的な推測です。 しばしば抜けている演算子はカンマです。

Missing right brace on %s

(F) \p{...}, \P{...}, \P{...} で右中かっこがありません。

Missing right curly or square bracket

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

(Missing semicolon on previous line?)

(S syntax) このメッセージは、"%s found where operator expected" という メッセージに伴って出される教育的な推測によるものです。 このメッセージが出たからといって、機械的に前の行に セミコロンを付けることはしないでください。

Modification of a read-only value attempted

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

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

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

もう一つの可能性は、foreach ループにおいて、VARLIST の中の 定数のエイリアスであるときに、VAR に代入した時です:

        $x = 1;
        foreach my $n ($x, 2) {
            $n *= 2; # modifies the $x, but fails on attempt to modify the 2
        }
Modification of non-creatable array value attempted, %s

(F) 配列値を存在するようにしようとしました。 おそらく、 添字が負数で、配列の終わりから逆に数えたとしても、 おかしな位置を指しているようです。

Modification of non-creatable hash value attempted, %s

(F) ハッシュ値を存在するようにしようとしましたが、何か特別な理由で、 できませんでした。

Module name must be constant

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

Module name required with -%c option

-M-m のオプションは Perl にモジュールを読み込ませることを 指示しますが、モジュール名がありませんでした。 -M-m に関する完全な詳細については perlrun を参照してください。

More than one argument to open

(F) open 関数に、複数のファイルを開くように指定されました。 これは引数のリストを取るコマンドへのパイプを開こうとしたときに、パイプ オープンモードを指定するのを忘れた時に起きます。 詳細は open in perlfunc を参照してください。

msg%s not implemented

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

Multidimensional syntax %s not supported

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

'/' must follow a numeric type in unpack

(F) '/' を含む unpack テンプレートがありますが、これがなんらかの 数値を生成する unpack 指定に引き続いていません。 pack in perlfunc を参照してください。

"my sub" not yet implemented

(F) レキシカルスコープのサブルーチンはまだ実装されていません。 まだ試さないでください。

"%s" variable %s can't be in a package

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

Name "%s::%s" used only once: possible typo

(W once) しばしばタイプミスによってユニークな変数名として表示されます。 ユニークな名前をを使う理由があるのなら、もう一度どこかで参照することで このメッセージを抑制できます。 our 宣言がこの目的のために提供されています。

注意: この警告はシンボルが一度だけしか使われていないことを検出するので、 $c, @c, %c, *c, &c, sub c{}, c(), c(ファイルハンドルかフォーマット)は 全て同じ物として扱われます; もしプログラムで $c を一度しか使っていなくても その他のものが使われている場合、警告は発生しません。

Negative '/' count in unpack

(F) 長さ/コード unpack 操作で得られた長さカウントが負数でした。 pack in perlfunc を参照してください。

Negative length

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

Negative offset to vec in lvalue context

(F) 左辺値コンテキストで vec が呼び出されたとき、 二つ目の引数は 0 以上でなければなりません。

Nested quantifiers in regex; marked by <-- HERE in m/%s/

(F) 括弧を挟まないで、数量子を数量子で修飾することはできません。 つまり、** や +* や ?* といったものは、正しくありません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。

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

%s never introduced

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

next::method/next::can/maybe::next::method cannot find enclosing method

(F) next::method は実パッケージの実メソッドのコンテキストの中で呼ばれる 必要がありますが、そのようなコンテキストが見つけられませんでした。 mro を参照してください。

No %s allowed while running setuid

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

No comma allowed after %s

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

これの原因としてあり得るものの一つは、useimport を使って 名前空間にインポートしたつもりの定数が実際にはインポートされていなかった 場合です; 例えば OS が特定の定数に対応していない場合などです。 できればインポートしたい定数のリストを明示的に使ってください; use in perlfuncimport in perlfunc を参照して下さい。 明示的なインポートリストでおそらくこのエラーをより早く知ることができますが、 そもそも OS がその定数に対応していないという問題を解決はしません。 おそらく useimport のシンボルインポートリストの定数か、 エラーを引き起こした行の定数名をタイプミスしたのでは?

No command into which to pipe on command line

(F) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 コマンドラインの最後にに '|' を発見しましたが、 このコマンドから出力をどこにパイプしたいのかがわかりませんでした。

No DB::DB routine defined

(F) 現在実行中のコードは、-d スイッチを付けてコンパイルされましたが、 何らかの理由により、現在のデバッガ(perl5db.plDevel:: モジュール) が各実行文の頭で呼び出すルーティンを定義していません。

No dbm on this machine

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

No DB::sub routine defined

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

No -e allowed in setuid scripts

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

No error file after 2> or 2>> on command line

(F) VMSに固有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、 コマンドラインに '2>' や '2>>' を発見しましたが、 標準エラーとしてデータを書き込むファイル名が見つかりませんでした。

No group ending character '%c' found in template

(F) pack や unpack のテンプレートに開きかっこの '(' や '[' がありますが、 対応する閉じかっこがありません。 pack in perlfunc を参照してください。

No input file after < on command line

(F) VMS 特有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、コマンドラインに '<' を発見しましたが、標準入力として読み込むためのファイル名が 見つかりませんでした。

No #! line

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

No next::method '%s' found for %s

(F) next::method で、このクラスの MRO で残っているパッケージの中で、この メソッド名のインスタンスがもうありません。 もし例外を投げたくないなら、maybe::next::methodnext::can を 使ってください。 mro を参照してください。

"no" not allowed in expression

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

No output file after > on command line

(F) VMS 特有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、コマンドラインの 最後に単独の '>' を発見したので、stdout をどこにリダイレクトしたいのかが わかりませんでした。

No output file after > or >> on command line

(F) VMS 特有のエラーです。 Perl は独自にコマンドラインのリダイレクトを扱っていて、コマンドラインに '>' や '>>' を発見しましたが、stdout を書き込むためのファイル名が 見つかりませんでした。

No package name allowed for variable %s in "our"

(F) 完全修飾変数名は "our" 宣言では使えません; なぜなら現在の動作ではほとんど意味がないからです。 そのような文法は将来の拡張に予約されています。

No Perl script found in input

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

No setregid available

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

No setreuid available

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

No %s specified for -%c

(F) 指示されたコマンドラインオプションには引数が必須ですが、それが 指定されませんでした。

No such class field "%s" in variable %s of type %s

(F) 示されている型の変数を通してハッシュのキーにアクセスしようとしましたが、 そのキーは同じ型のパッケージによって許可されていません。 示されているパッケージは fields プラグマによって許可されるキーの集合が 制限されています。

No such class %s

(F) "my", "our", "state" の宣言でクラス修飾子が指定されましたが、指定された クラスは現時点では存在しません。

No such hook: %s

(F) Perl が認識できないシグナルフックを指定しました。 現在のところ、Perl は有効なシグナルフックとして __DIE____WARN__ を受け付けます。

No such pipe open

(P) VMS 特有のエラーです。 内部ルーチンである my_pclose() が、開いていないパイプを閉じようとしました。 これは開いていないファイルハンドルを閉じようとしたとしてもっと早くに 捕捉されるべきものです。

No such signal: SIG%s

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

Not a CODE reference

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

Not a format reference

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

Not a GLOB reference

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

Not a HASH reference

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

Not an ARRAY reference

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

Not a perl script

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

Not a SCALAR reference

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

Not a subroutine reference

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

Not a subroutine reference in overload table

(F) 多重定義テーブルで、有効なサブルーティンを指していないエントリを 指定しようとしました。 overload を参照してください。

Not enough arguments for %s

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

Not enough format arguments

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

%s: not found

(A) スクリプトを perl ではなく Bourne shell で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

no UTC offset information; assuming local time is UTC

(S) VMS 固有の警告です。 Perl はローカルタイムゾーンオフセットを見つけることができなかったので、 ローカルシステムタイムは UTC と等価であると仮定します。 もし違うなら、論理名 SYS$TIMEZONE_DIFFERENTIAL に、UTC からローカル 時刻を得るために加える必要がある秒数を定義してください。

Non-string passed as bitmask

(W misc) select() のビットマスク引数として数値が渡されました。 select のためのファイル記述子のビットマスクを構成するには、 vec() 関数を使ってください。 select in perlfunc を参照してください。

Null filename used

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

NULL OP IN RUN

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

Null picture in formline

(F) formline の第 1 引数は有効なフォーマットピクチャー指定でなければ なりません。 これが空でした; おそらく初期化していない値を指定したのでしょう。 perlform を参照してください。

Null realloc

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

NULL regexp argument

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

NULL regexp parameter

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

Number too long

Perl はプログラム中での十進数の表現を 250 文字に制限しています。 この制限を越えました。 Perl の将来のバージョンではこの恣意的な制限は除去されるでしょう。 それまでの間は、科学的な記述法("1_000_000" ではなく "1e6")を 使用してください。

Octal number in vector unsupported

頭に 0 の付いた数値は現在のところベクタとしては使えません。 このような数値を 8 進数として解釈する機能は将来のバージョンで 対応されるでしょう。

Octal number > 037777777777 non-portable

(W portable) 指定した 8 進数が 2**32-1 (4294967295) より大きいので、 システム間で移植性がありません。 移植性に関するさらなる考察については perlport を参照してください。

移植性のあるコードの書き方についても perlport を参照してください。

Odd number of arguments for overload::constant

(W overload) 奇数の数の引数で overload::constant を呼び出しました。 引数はペアになっている必要があります。

Odd number of elements in anonymous hash

(W misc) ハッシュリストへの要素の数が奇数でした。 ハッシュリストは、key/value のペアで与えられますから、 これは奇妙なことです。

Odd number of elements in hash assignment

(W misc) ハッシュリストへの要素の数が奇数でした。 ハッシュリストは、key/value のペアで与えられますから、 これは奇妙なことです。

Offset outside string

(F, W layer) バッファの外を指すオフセットで read/write/send/recv/seek 操作を しようとしました。 これは想像しにくいことです。 唯一の例外は、ファイルを sysread() するときに 文字列の最後を越えたか、 (将来の読み込みと実際のファイルの振る舞いを模倣することを期待して) I/O のためにオープンされているスカラの最後を越えてシークしたときに、 0 でパッディングされたときです。

%s() on unopened %s

(W unopened) 初期化していないファイルハンドルに I/O 操作をしようとしました。 open(), sysopen(), socket() を呼び出すか、FileHandle パッケージの コンストラクタを呼び出す必要があります。

-%s on unopened filehandle %s

(W unopened) 開いていないファイルハンドルに対してファイルテスト演算子を 使おうとしました。 制御フローをチェックしてください。 -X in perlfunc も参照してください。

oops: oopsAV

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

oops: oopsHV

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

Opening dirhandle %s also as a file

(W io deprecated) open() で、既にディレクトリハンドルを保持しているシンボル (グロブまたはスカラ)にファイルハンドルを関連付けようとしました。 これは不正ではありませんが、この用法はコードを間違えて解釈する可能性が あるので非推奨です。

Opening filehandle %s also as a directory

(W io deprecated) すでにファイルハンドルを保持しているシンボル (グロブまたはスカラ)にディレクトリハンドルを関連付けるために opendir() を使いました。 これは不正ではありませんが、この用法はコードを間違えて解釈する可能性が あるので非推奨です。

Operation "%s": no method found, %s

(F) ハンドラが定義されていないオーバーロード操作が行われました。 一部のハンドラは他のハンドラから自動生成されますが、fallback オーバーロードキーが真に指定されていない限り、どの動作にも デフォルトのハンドラはありません。 overload を参照してください。

Operator or semicolon missing before %s

(S ambiguous) パーサーが演算子を装置している場所で変数やサブルーチン 呼び出しが使われました。 パーサーはあなたが本当に演算子を使おうとしていると仮定しますが、 これは大抵正しくありません。 例えば、"*foo *foo" とすると、"*foo * 'foo'" としたとして解釈されます。

"our" variable %s redeclared

(W misc) 現在のレキシカルスコープで、既に同じ名前のグローバル変数を 宣言しているようです。

Out of memory!

(X) 要求を満たすだけの、十分な残メモリ (または、仮想メモリ) が 取得できないことを示す、0 を malloc() 関数が返しました。 Perl は直ちに終了するしかありませんでした。

少なくとも Unix ではプロセスのデータサイズ制限を増やすことによって これを回避することが可能です: csh/tcsh では現在の制限を調べるのに limit を、これを変更するには limit datasize n (ここで n はキロバイト単位) を使ってください; ksh/bash/zsh ではそれぞれ ulimit -aulimit -d n を使ってください。

Out of memory during %s extend

(X) 確保可能な最大メモリを越えて配列、リスト、文字列を拡張しようとしました。

Out of memory during "large" request for %s

(F) malloc() 関数が 0 を返しました; これは要求を満たすメモリ (または仮想メモリ)が不十分であることを示しています。 しかし、要求が十分大きい(コンパイル時のデフォルトは 64K)ので、 このエラーをトラップすることでシャットダウンできる可能性があります。

Out of memory during request for %s

(X|F) malloc() 関数が 0 を返しました; これは要求を満たすメモリ (または仮想メモリ)が不十分であることを示しています。

要求は小さいものと判定されたので、これをトラップできる確率は perl が どのようにコンパイルされたかに依存します。 デフォルトではこれはトラップできません。 しかし、もしこのためにコンパイルすると、Perl はこのメッセージと共に die() した後の非常用エリアとして $^M の内容を使います。 この場合エラーは 一度だけ トラップ可能で、エラーメッセージは失敗した 要求が起きたファイルと行番号を含んでいます。

Out of memory during ridiculously large request

(F) 2^31+「少量」バイト以上割り当てることはできません。 このエラーはほとんどの場合($arr[$time] の代わりに $arr[time] のような) Perl プログラムのタイプミスが原因です。

Out of memory for yacc stack

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

'.' outside of string in pack

(F) テンプレートでの '.' の引数として、pack された文字列が構築されたよりも 前に作業位置を移動しようとしました。

'@' outside of string in unpack

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

'@' outside of string with malformed UTF-8 in unpack

(F) unpack された文字列の外側を絶対位置で指定するテンプレートを 使っています。 unpack された文字列は不正な UTF-8 でもあります。 pack in perlfunc を参照してください。

%s package attribute may clash with future reserved word: %s

(W reserved) パッケージ固有のハンドラが、小文字の属性名を使っています。 この名前は、たとえ今は使っていなくても、 Perl 自身がいつか使うかもしれません。 おそらく代わりに大文字小文字の混じった属性名を使うべきでしょう。 attributes を参照してください。

pack/unpack repeat count overflow

(F) 繰り返し回数として符号付き整数をオーバーフローするような 値は指定できません。 unpack in perlfunc を参照してください。

page overflow

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

panic: %s

(P) 内部エラーです。

panic: attempt to call %s in %s

(P) ファイルテスト演算子の一つが ACL 関連関数を呼び出すコード分岐に 入りましたが、この関数はこのプラットフォームでは利用できません。 より早いチェックは、このプラットフォームのこの分岐に入ることがないように するべきことを意味します。

panic: ck_grep

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

panic: ck_split

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

panic: corrupt saved stack index

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

panic: del_backref

(P) 弱いリファレンスをリセットしようとしたときに内部の 一貫性チェックに引っ掛かりました。

panic: Devel::DProf inconsistent subroutine return

(P) Devel::DProf が goto(LABEL), last(LABEL), next(LABEL) を使って 終了したサブルーチンを呼び出しました。 XSUB から呼び出されたサブルーチンをこのような方法で離れると、 インタプリタをクラッシュさせる可能性がとても高いです。 これはいつか修正されてほしいバグです。

panic: die %s

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

panic: do_subst

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

panic: do_trans_%s

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

panic: fold_constants JMPENV_PUSH returned %d

(P) 定数の畳み込みを実行中に eval 失敗以外の例外が捕捉されました。

panic: frexp

(P) ライブラリ関数 frexp() が失敗したので、printf("%f") ができません。

panic: goto

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

panic: hfreeentries failed to free hash

(P) ハッシュ要素をクリアするための内部ルーチンが何度か実行されましたが、 実行される毎に何かがハッシュに要素を追加しました。 最もありそうなのは、ハッシュが、そのハッシュへのリファレンスがある オブジェクトと、ハッシュへの新しいオブジェクトを追加するデストラクタを 含む場合です。

panic: INTERPCASEMOD

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

panic: INTERPCONCAT

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

panic: kid popen errno read

(F) fork した子プロセスが errno に関して不完全なメッセージを返しました。

panic: last

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

panic: leave_scope clearsv

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

panic: leave_scope inconsistency

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

panic: magic_killbackrefs

(P) あるオブジェクトへの全ての弱い参照をリセットしようとした時に内部の 一貫性チェックに引っ掛かりました。

panic: malloc

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

panic: memory wrap

(P) 何かが、確保可能な量を超えるメモリを確保しようとしました。

panic: pad_alloc

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

panic: pad_free curpad

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

panic: pad_free po

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

panic: pad_reset curpad

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

panic: pad_sv po

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

panic: pad_swipe curpad

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

panic: pad_swipe po

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

panic: pp_iter

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

panic: pp_match%s

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

panic: pp_split

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

panic: realloc

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

panic: restartop

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

panic: return

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

panic: scan_num

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

panic: sv_chop %s

(P) sv_chop() ルーチンは、スカラの文字列バッファ内でない位置を 渡されました。

panic: sv_insert

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

panic: top_env

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

panic: unimplemented op %s (#%d) called

(P) コンパイラがおかしくなって、実行時に許可されていない op を しようとしました。

panic: utf16_to_utf8: odd bytelen

(P) 何かが(偶数ではなく)奇数のバイト長で utf16_to_utf8 を 呼び出そうとしました。

panic: yylex

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

Pattern subroutine nesting without pos change exceeded limit in regex; marked by <-- HERE in m/%s/

(F) テキストを全く消費することなく、あまりに多くネストした副パターンを使う パターンを使いました。 ネストの制限を越える前にテキストを消費するようにパターンを 再構成してください。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Parentheses missing around "%s" list

(W parenthesis) おそらく以下のようにしたのでしょう:

    my $foo, $bar = @_;

以下のようにすべきです:

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

"my", "our", "local", "state" は、コンマよりも強く結合することを 忘れないでください。

-p destination: %s

(F) -p コマンドラインオプションで起動された 暗黙の出力中にエラーが発生しました。 (この出力は select() でリダイレクトしていない限り STDOUT に出力されます。)

(perhaps you forgot to load "%s"?)

(F) これは "Can't locate object method \"%s\" via package \"%s\"" の メッセージと共に出る教育的な推測です。 これはしばしばメソッドがまだロードされていないパッケージを 要求していることを意味します。

Perl_my_%s() not available

(F) あなたのプラットフォームはとても珍しいバイト順と整数サイズを 使っているので、固定長バイト順変換関数の一部または全部を使うことができません。 これは (un)pack テンプレートの中で '<' か '>' の修飾子を使った場合にのみ問題となります。 pack in perlfunc を参照してください。

Perl %s required--this is only version %s, stopped

(F) 問題のモジュールは、現在実行中の Perl よりも最近のバージョンの 機能を使っています。 ところで、いつからアップグレードしていないのですか? require in perlfunc を参照してください。

PERL_SH_DIR too long

(F) OS/2 固有のエラーです。 PERL_SH_DIR は sh-shell を見つけるためのディレクトリです。 perlos2 の "PERL_SH_DIR" を参照してください。

PERL_SIGNALS illegal: "%s"

有効な値については PERL_SIGNALS in perlrun を参照してください。

perl: warning: Setting locale failed.

(S) 警告全体は以下のような形になります:

        perl: warning: Setting locale failed.
        perl: warning: Please check that your locale settings:
                LC_ALL = "En_US",
                LANG = (unset)
            are supported and installed on your system.
        perl: warning: Falling back to the standard locale ("C").

正確にどのロケール設定が失敗したのかは様々です。 上記では設定は LC_ALL は "En_US" で、LANG は空でした。 このエラーは、あなたや OS 供給者やシステム管理者がロケールシステムと呼ばれる ものをセットアップしましたが、Perl がこれらの設定を使えないことを 検出したことを意味します。 これは幸いにして致命的ではありません; Perl が使用できる "C" と呼ばれる 「デフォルトロケール」が存在するので、スクリプトは実行されます。 しかし、本当にこの問題を解決するまでは、Perl を実行する毎に同じエラー メッセージが表示されます。 本当にこの問題を修正する方法は perllocaleLOCALE PROBLEMS の 章にあります。

Permission denied

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

pid %x not a child

(W exec) VMS 固有の警告です。 現在のプロセスのサブプロセスでないプロセスに Waitpid() を使いました。 これは VMS の観点からは問題ありませんが、おそらくあなたの望んでいることでは ないでしょう。

'P' must have an explicit size in unpack

(F) unpack フォーマット P は "*" ではなく、明示的なサイズを 指定しなければなりません。

-P not allowed for setuid/setgid script

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

POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/

(F) 文字クラス [: :] 文法の中のクラスは不明です。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 POSIX 文字クラスは、対応する C インターフェースが持っている is 接頭辞が 付かない ことに注意してください: 言い換えると、[[:print:]] であり、 isprint ではありません。 perlre を参照してください。

POSIX getpgrp can't take an argument

(F) お使いのシステムは、引数に pid をとる BSD バージョンの getpgrp() と違って、引数をとらない POSIX のものを使っています。

POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/

(W regexp) 例えば /[012[:alpha:]345]/ のように、文字クラス構造 [: :], [= =], [. .] が文字クラスの 内側 にあり、[] は構造の一部です。 [= =] と [. .] は現在のところ実装されていないことに注意してください; これらは単に将来の拡張のためのプレースホルダであり、致命的エラーを 生成します。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/

(F regexp) 正規表現文字クラス ([]) の中では、"[." で始まる文法と ".]" で 終わる文法は将来の拡張のために予約されます。 正規表現文字クラスの中でこのような文字シーケンスを表現する必要がある 場合には、"\[." と ".\]" のように、大かっこをバックスラッシュで クォートしてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/

(F) 正規表現文字クラス ([]) の中では、"[=" で始まる文法と "=]" で 終わる文法は将来の拡張のために予約されます。 正規表現文字クラスの中でこのような文字シーケンスを表現する必要がある 場合には、"\[=" と "=\]" のように、大かっこをバックスラッシュで クォートしてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Possible attempt to put comments in qw() list

(W qw) qw() リストは空白で分割されたアイテムを含んでいます; リテラル文字列では、コメント文字無視されず、リテラルデータとして扱われます。 (かっこ以外のデリミタを使うこともできます; 中かっこもよく使われます。)

おそらく以下のように書いたのでしょう:

    @list = qw(
        a # a comment
        b # another comment
    );

以下のように書くべきです:

    @list = qw(
        a
        b
    );

本当にコメントをつけたいのなら、 リストを昔のクォートとカンマの形で書いてください。

    @list = (
        'a',    # a comment
        'b',    # another comment
    );
Possible attempt to separate words with commas

(W qw) qw() リストに空白で分割された項目があります; そのため、カンマは項目を分割する必要がありません。 (ここで使われているのと違うデリミタを用いているかもしれません; 大括弧もよく使われます。)

おそらく以下のように書いたのでしょう:

    qw! a, b, c !;

リスト要素の中にリテラルのカンマを書いています。 データの中にカンマを出したくないなら、カンマなしで書きます:

    qw! a b c !;
Possible memory corruption: %s overflowed 3rd argument

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

Possible precedence problem on bitwise %c operator

(W precedence) 以下のように、ビット単位の論理演算子を数値比較演算子と 結合して使用しています:

    if ($x & $y == 0) { ... }

この式は、== の優先順位の方が高いので、$x & ($y == 0) と 等価になります。 これはおそらく望んでいるものではないでしょう。 (もし本当にこのように書きたいのなら、警告を無効にするか、あるいは よりよいのはかっこを明示的に使って $x & ($y == 0) と書きます。)

Possible unintended interpolation of %s in string

(W ambiguous) 「@foo」のようなものをダブルクォート文字列の中に書きましたが、 現在のスコープ内に @foo という配列はありません。 リテラルな @foo を指定したい場合は、\@foo と書いてください; そうでなければ、どうやら見失ってしまったらしい配列に何が起こったを 調べてください。

pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead

(D deprecated) おそらく以下のように書いたのでしょう:

    sub doit
    {
        use attrs qw(locked);
    }

代わりに新しい定義の文法で書くべきです:

    sub doit : locked
    {
        ...

use attrs プラグマはもう古いもので、後方互換性のためだけに 提供されています。 Subroutine Attributes in perlsub を参照してください。

Precedence problem: open %s should be open(%s)

(S precedence) 古い変則的な構文

    open FOO || die;

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

    open(FOO || die);

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

Premature end of script headers

"Server error" を参照してください。

printf() on closed filehandle %s

(W closed) 書き込みを行なおうとしたファイルハンドルは、既に閉じられています。 制御フローをチェックしてください。

print() on closed filehandle %s

(W closed) print を行なおうとしたファイルハンドルは、既に閉じられています。 制御フローをチェックしてください。

Process terminated by SIG%s

(W) *nix アプリケーションは何も出力せずに終了しますが、 OS/2 アプリケーションはこれを標準メッセージとして出力します。 これは OS/2 版の仕様とみなされています。 適切なシグナルハンドラによって簡単に無効にできます; Signals in perlipc を参照してください。 perlos2 の "Process terminated by SIGTERM/SIGINT" も参照してください。

Prototype mismatch: %s vs %s

(S prototype) 以前異なる関数プロトタイプで宣言または定義された サブルーチンが宣言または定義されました。

Prototype not terminated

(F) 関数プロトタイプ宣言で、閉じかっこがありませんでした。

Quantifier follows nothing in regex; marked by <-- HERE in m/%s/

(F) 正規表現を量指定子で開始しています。 もしそれをリテラルに使いたいなら、バックスラッシュでクォートしてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/

現在のところ、{min,max} 構造の最大値と最小値には制限があります。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/

(W regexp) 正規表現量指定子をゼロ幅アサーションのような意味のない場所に 適用しました。 代わりにアサーションの中に量指定子を置いてください。 例えば、"xyz" を 3 回繰り返した後の "abc" にマッチングさせるには、 /abc(?=xyz){3}/ ではなく /abc(?=(?:xyz){3})/ としてください。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Range iterator outside integer range

(F) 範囲演算子 ".." の一つ(または両方)の数値引数が、内部で整数として 表現できる範囲を越えています。 回避方法のひとつとしては、数値の頭に "0" を付けることで Perl に マジカル文字列インクリメントの使用を強制させることです。

readdir() attempted on invalid dirhandle %s

(W io) 読み込もうとしたディレクトリハンドルは既に閉じられているか、 実際にはディレクトリハンドルではありません。 制御フローをチェックしてください。

readline() on closed filehandle %s

(W closed) 読み込もうとしたファイルハンドルは、既に閉じられています。 制御フローをチェックしてください。

read() on closed filehandle %s

(W closed) 閉じたファイルハンドルから読み込もうとしました。

read() on unopened filehandle %s

(W unopened) 開いていないファイルハンドルから読み込もうとしました。

Reallocation too large: %lx

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

realloc() of freed memory ignored

内部ルーチンが、何か既に解放されているものに対して realloc() を 呼び出しました。

Recompile perl with -DDEBUGGING to use -D switch

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

Recursive inheritance detected in package '%s'

(F) パッケージのメソッド解決順序 (MRO) の計算中に、@ISA 構造に 無限ループがあると判断しました。 これは、@ISA を 100 階層探索した後に起きる荒いチェックです。

Recursive inheritance detected while looking for method %s

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

Reference found where even-sized list expected

(W misc) Perl が(ハッシュへの代入のために)偶数の数の要素のリストを 想定しているところに 1 つのリファレンスを渡しました。 これは普通かっこを使うべきところで無名ハッシュコンストラクタを使ったことを 意味します。 とにかく、ハッシュはキー/値の を要求します。

    %hash = { one => 1, two => 2, };    # WRONG
    %hash = [ qw/ an anon array / ];    # WRONG
    %hash = ( one => 1, two => 2, );    # right
    %hash = qw( one 1 two 2 );                  # also fine
Reference is already weak

(W misc) 既に弱いリファレンスを弱めようとしました。 そうしても何の効果もありません。

Reference miscount in sv_replace()

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

Reference to invalid group 0

(F) 正規表現で \g0 のようなものを使いました。 捕捉用のかっこへの参照は、正数(通常の後方参照)か、負数(相対後方参照) のみなので、0 は意味を成しません。

Reference to nonexistent group in regex; marked by <-- HERE in m/%s/

正規表現の中で \7 のような記述がありますが、 正規表現の中に値を捕らえる括弧が 7 つありません。 正規表現の中に値 7 を持つ文字を挿入したい場合、 ゼロをつけて最低二桁の数値にする必要があります: \07

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Reference to nonexistent or unclosed group in regex; marked by <-- HERE in m/%s/

(F) 正規表現で \g{-7} のようなものを使いましたが、式中で \g{-7} の 位置より前に少なくとも 7 組の捕捉用のかっこの組がありません。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

Reference to nonexistent named group in regex; marked by <-- HERE in m/%s/

(F) 正規表現中に \k'NAME'\k<NAME> のようなものを使いましたが、 (?'NAME'...)(?<NAME...) のような、対応する名前付き捕捉かっこが ありません。 前方参照と定義の両方において、名前のスペルが正しいかどうか チェックしてください。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

(?(DEFINE)....) does not allow branches in regex; marked by <-- HERE in m/%s/

(F) 不正な形の (?(DEFINE)...|..) のようなものを使いました。 このエラーの、もっともありそうな理由は、.... パートの中のかっこを そのままにしたことです。

<-- HERE で正規表現のどこに問題が発見されたかを示しています。

regexp memory corruption

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

Regexp out of space

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

Repeated format line will never terminate (~~ and @# incompatible)

(F) フォーマットに ~~ (空白まで繰り返し)シーケンスと決して空白にならない スウチフィールドが含まれているので、無限ループになります。 代わりに ^# を使うべきでしょう。 perlform を参照してください。

Reversed %s= operator

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

rewinddir() attempted on invalid dirhandle %s

(W io) rewinddir() しようとしたディレクトリハンドルは既に閉じられているか、 実際にはディレクトリハンドルではありません。 制御フローをチェックしてください。

Runaway format

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

Scalars leaked: %d

(P) Perl 内部のスカラ管理で何かがおかしくなりました: Perl 終了時に全てのスカラ変数が解放されませんでした。 これは普通メモリリークを示していて、これはもちろん悪いことですが、 Perl プログラムが長い間動作する場合には特にそうです。

Scalar value @%s[%s] better written as $%s[%s]

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

一方、もし本当に配列要素をリストとして扱いたい場合、リファレンスが どのように働くかについて詳しく知る必要があります; なぜなら Perl はスカラとリストを自動的に変換したりはしないからです。 perlref を参照してください。

Scalar value @%s{%s} better written as $%s{%s}

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

一方、もし本当にハッシュ要素をリストとして扱いたい場合、リファレンスが どのように働くかについて詳しく知る必要があります; なぜなら Perl はスカラとリストを自動的に変換したりはしないからです。 perlref を参照してください。

Script is not setuid/setgid in suidperl

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

Search pattern not terminated

(F) // もしくは m{} 構文の最後の区切り文字が見つかりませんでした。 括弧類の区切り文字では、ネストを数えることを忘れないでください。 $m 変数の前に $ をつけるのを忘れるとこのエラーが出ることがあります。

Perl 5.9.0 から、// は defined-or 構文として扱われ、単なる 空検索パターンではありません。 従って、Perl 5.9.0 以降で書かれた、// を defined-or として使っている コードは、5.9.0 以前の Perl では、終端していない検索パターンとして 誤パースされるかもしれません。

Search pattern not terminated or ternary operator parsed as search pattern

(F) 構文解析器が ?PATTERN? 構造の最後のデリミタを見つけられませんでした。

クエスチョンマークは (foo ? 0 : 1 のような) 3 項演算子の一部としても 使われるので、紛らわしい構造の場合は間違ってパースされることがあります。 パースのあいまいさをなくすための一つの方法は、(foo) ? 0 : 1 のように 条件式をかっこで括ることです。

%sseek() on unopened filehandle

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

seekdir() attempted on invalid dirhandle %s

(W io) seekdir() しようとしたディレクトリハンドルは閉じられているか、 実際にはディレクトリハンドルではありません。 制御フローをチェックしてください。

select not implemented

(F) このマシンでは、select() システムコールは実装されていません。

Self-ties of arrays and hashes are not supported

(F) 配列やハッシュの自己 tie は現在の実装では対応していません。

Semicolon seems to be missing

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

semi-panic: attempt to dup freed string

(S internal) 既に解放と印を付けたスカラを複製するために、内部の newSVsv() ルーティンが呼ばれました。

sem%s not implemented

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

send() on closed socket %s

(W closed) 送信を行なおうとしたソケットは、既に閉じられています。 制御フローをチェックしてください。

Sequence (? incomplete in regex; marked by <-- HERE in m/%s/

(F) 正規表現が不完全な拡張 (? で終わっています。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/

(F) 使おうとした正規表現の拡張は、予約された文字ですが、 まだ実装されていません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Sequence (?%s...) not recognized in regex; marked by <-- HERE in m/%s/

(F) お使いになった正規表現の拡張は、意味をなしません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Sequence \\%s... not terminated in regex; marked by <-- HERE in m/%s/

(F) 正規表現でエスケープシーケンスの後に必須の引き数を想定しましたが、 それが省略されているか適切に書かれていません。

Sequence (?#... not terminated in regex; marked by <-- HERE in m/%s/

(F) 正規表現のコメントは閉じかっこで終わらなければなりません。 組み込みのかっこは許可されません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/%s/

(F) (?{...}) 節の中に大括弧がある場合、対応していなければなりません。 Perl が正しく節の最後を検出するためです。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

  • Server error

    "Server error" を参照してください。

  • Server error

    これは、一般的には CGI (SSI を含みます)プログラムを WWW 越しに 実行しようとしたときにブラウザのウィンドウに表示されるメッセージです。 実際のエラーテキストはサーバーによって大きく異なります。 もっともよく見られるものとしては、"500 Server error", "Method (something) not permitted", "Document contains no data", "Premature end of script headers", "Did not produce a valid header" が あります。

    これは CGI のエラーであり、Perl のエラーではありません.

    まずはあなたのスクリプトが実行可能か、CGI を実行するユーザー(これはおそらく あなたがテストしたユーザーではありません)で読み込み可能か、実行しているのとは 異なるユーザーの環境変数(PATH など)に依存していないか、CGI サーバーが 見つけられない場所に置いていないか、といったことを確認する必要があるでしょう。 さらなる情報については以下を参照してください。

            http://www.perl.org/CGI_MetaFAQ.html
            http://www.htmlhelp.org/faq/cgifaq.html
            http://www.w3.org/Security/Faq/

    perlfaq9 も見るべきでしょう。

    setegid() not implemented

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

    seteuid() not implemented

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

    setpgrp can't take arguments

    (F) このシステムの setpgrp() は BSD 4.2 由来のもので、引数がありません。 POSIX setpgid() はプロセス ID とプロセスグループ ID を引数にとります。

    setrgid() not implemented

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

    setruid() not implemented

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

    setsockopt() on closed socket %s

    (W closed) 閉じているソケットにソケットオプションを設定しようとしました。 socket() 呼び出しの返り値のチェックを忘れていませんか? setsockopt in perlfunc を参照してください。

    Setuid/gid script is writable by world

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

    Setuid script not plain file

    (F) setuid エミュレータは、ファイルからではなく、ソケットやパイプや その他のデバイスから読み込んだスクリプトは実行できません。

    shm%s not implemented

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

    !=~ should be !~

    (W syntax) 非マッチ演算子は !=~ ではなく !~ です。 !=~ は != (数値の不一致) と ~ (1 の補数) 演算子と解釈されます: おそらくあなたの意図していることではないでしょう。

    <> should be quotes

    (F) require 'file' と書くべきところで require <file> と 書いています。

    /%s/ should probably be written as "%s"

    (W syntax) join の最初の引数として、Perl が文字列を想定しているところに パターンを使いました。 Perl は $_ をパターンマッチングした結果の真か偽の値を文字列として 扱いますが、これはおそらく望んでいることではないでしょう。

    shutdown() on closed socket %s

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

    SIG%s handler "%s" not defined

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

    Smart matching a non-overloaded object breaks encapsulation

    (F) オーバーロードしていないオブジェクトに対して ~~ 演算子を 使うべきではありません: Perl はスマートマッチング時にオブジェクトの 基礎となる構造を使うことを拒否します。

    sort is now a reserved word

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

    Sort subroutine didn't return a numeric value

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

    Sort subroutine didn't return single value

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

    splice() offset past end of array

    (W misc) splice() で渡された配列の末尾より後ろのオフセットを指定しました。 splice は配列の末尾ではなく、配列の最後の位置に対して実行されます。 これが望んでいることではないなら、$#array = $offset と代入することで 明示的に事前に配列を拡張してください。 splice in perlfunc を参照してください。

    Split loop

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

    Statement unlikely to be reached

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

    stat() on unopened filehandle %s

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

    Stub found while resolving method "%s" overloading "%s"

    (P) @ISA ツリーでのオーバーロードの解決がインポートのスタブで壊されました。 スタブは暗黙に作られることはありませんが、明示的に can を呼び出すと これを破壊することがあります。

    Subroutine %s redefined

    (W redefine) サブルーティンを再定義しました。 この警告を止めるには、以下のようにしてください:

        {
            no warnings 'redefine';
            eval "sub name { ... }";
        }
    Substitution loop

    (P) 置換が無限ループに陥りました。 (明らかに、置換は入力文字数以上には起こらないはずですが、 それが起こってしまいました。) Quote and Quote-Like Operators in perlop を参照してください。

    Substitution pattern not terminated

    (F) s/// もしくは s{}{} 構文の真ん中の区切り文字が見つかりませんでした。 括弧類の区切り文字では、ネストを数えることを忘れないでください。 $s 変数の前に $ をつけるのを忘れるとこのエラーが出ることがあります。

    Substitution replacement not terminated

    (F) s/// もしくは s{}{} 構文の最後の区切り文字が見つかりませんでした。 括弧類の区切り文字では、ネストを数えることを忘れないでください。 $s 変数の前に $ をつけるのを忘れるとこのエラーが出ることがあります。

    substr outside of string

    (W substr),(F) 文字列の外を指す substr() を参照しようとしました。 つまり、オフセットの絶対値が、文字列の長さより大きくなっています。 substr in perlfunc を参照してください。 この警告は、substr が(代入の左側やサブルーチンの引数といった) 左辺値として使われた場合は致命的となります。

    suidperl is no longer needed since %s

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

    sv_upgrade from type %d down to type %d

    (P) Perl は SV を、実際には現在の型より下位の型への昇格を 強制しようとしました。

    Switch (?(condition)... contains too many branches in regex; marked by <-- HERE in m/%s/

    (F) (?(condition)if-clause|else-clause) 構造は最大で 2 つの分岐 (if-clause と else-clause) を持つことができます。 片方、または両方に選択肢を含めたいときは、それをかっこで囲んでください:

        (?(condition)(?:this|that|other)|else-clause)

    <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    Switch condition not recognized in regex; marked by <-- HERE in m/%s/

    (?(...)if-clause|else-clause) 構造の引数が数値なら、数値だけが可能です。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    switching effective %s is not implemented

    (F) use filetest プラグマを使っている間に、 実と実効の UID や GID の切り替えに失敗しました。

    %s syntax

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

    syntax error

    (F) おそらく、構文エラーが起こっています。 よくある原因としては以下のことが考えられます:

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

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

    syntax error at line %d: `%s' unexpected

    (A) スクリプトを perl ではなく Bourne shell で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

    syntax error in file %s at line %d, next 2 tokens "%s"

    (F) このエラーは、perl5 のスクリプトを perl4 インタプリタで実行したときに おきそうなものです; 特に次の 2 つのトークンが "use strict" か "my $var" か "our $var" の場合はそうです。

    sysread() on closed filehandle %s

    (W closed) 閉じたファイルハンドルから読み込もうとしました。

    sysread() on unopened filehandle %s

    (W unopened) 開いていないファイルハンドルから読み込もうとしました。

    System V %s is not implemented on this machine

    (F) 何か、名前が "sem"、"shm"、"msg" で始まる関数を実行しようとしましたが、 あなたのマシンには System V IPC が実装されていません。 機能はあっても設定されていない場合もあります。 システムサポートに相談してください。

    syswrite() on closed filehandle %s

    (W closed) 書き込みを行なおうとしたファイルハンドルは、既に閉じられています。 制御フローをチェックしてください。

    -T and -B not implemented on filehandles

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

    Target of goto is too deeply nested

    (F) goto で、Perl が届かないほど深くネストしたラベルに移動しようとしました。 Perl は親切にもこれを拒否します。

    tell() on unopened filehandle

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

    telldir() attempted on invalid dirhandle %s

    (W io) telldir() しようとしたディレクトリハンドルは既に閉じられているか、 実際にはディレクトリハンドルではありません。 制御フローをチェックしてください。

    That use of $[ is unsupported

    (F) 現在、$[ への代入は、厳しく制限され、コンパイラ指示子と解釈されます。 使えるのは以下の形だけです:

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

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

    The crypt() function is unimplemented due to excessive paranoia

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

    The %s function is unimplemented

    (F) この関数は、Configure の調査によると、このアーキテクチャでは、 実装されていないようです。

    The stat preceding %s wasn't an lstat

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

    The 'unique' attribute may only be applied to 'our' variables

    (F) この属性は mysub の宣言では対応していません。

    This Perl can't reset CRTL environ elements (%s)
    This Perl can't set CRTL environ elements (%s=%s)

    (W internal) VMS 固有の警告です。 CRTL の内部環境配列を変更または削除しようとしましたが、この Perl は setenv() 関数を含んだ CRTL でビルドされていません。 これを含む CRTL を使って Perl を再ビルドするか、環境配列がこの警告を 出力している %ENV を変更するターゲットとならないように PERL_ENV_TABLES (perlvms を参照してください) を再定義してください。

    thread failed to start: %s

    (W threads)(S) threads->create() のエントリポイント関数が何らかの理由で 失敗しました。

    times not implemented

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

    "-T" is on the #! line, it must also be used on the command line

    (X) Perl スクリプトの #! 行(あるいはローカルで等価なもの)に -T オプションが含まれていますが、Perl はコマンドラインで -T 付きで 起動されていません。 Perl がスクリプトの中で -T を発見した時点では、環境からの全てを 汚染チェックするには遅すぎるので、これはエラーになります。 それで Perl は諦めます。

    perl スクリプトが #! 機構(またはローカルな等価な機構)を使ってコマンドとして 実行される場合、このエラーは普通 -T オプションを Perl の最初の引数に 変更する(perl -n -Tperl -T -n に変更する)ことで修正されます。

    Perl スクリプトが perl scriptname として起動される場合、-T オプションは コマンドラインに書かなければなりません: perl -T scriptname

    To%s: illegal mapping '%s'

    (F) lc(), lcfirst, uc(), or ucfirst() (またはこれらの文字列組み込み版)の ためのカスタマイズされた変換先マッピングを定義しようとしましたが、 不正なマッピングを指定しました。 User-Defined Character Properties in perlunicode を参照してください。

    Too deeply nested ()-groups

    (F) テンプレートに、おかしいぐらいネストした () グループがあります。

    Too few args to syscall

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

    Too late for "-%s" option

    (X) Perl スクリプトの #! 行(またはローカルな等価な機構)に -M, -m, -C オプションが含まれています。

    -M-m に関しては、スクリプト内部で使うためのものではないので、 これはエラーになります。 代わりに use プラグマを使ってください。

    -C オプションは、コマンドラインも (以下と同じ文字と数値の並びで) 指定されたときにのみ動作します。 このオプションをコマンドラインで指定するか、もしシステムが対応しているなら、 スクリプトを perl に渡すのではなく、スクリプトを実行可能にして 直接実行してください。

    Too late to run %s block

    (W void) CHECK か INIT のブロックが、それが実行される機会が過ぎてから 実行時に定義されました。 おそらく use を使うべきときに requiredo を使ってファイルを 読み込んでいます。 あるいはおそらく BEGIN ブロックの中に requiredo を 書いたのでしょう。

    Too many args to syscall

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

    Too many arguments for %s

    (F) 関数が要求する以上の引数を指定しました。

    Too many )'s

    (A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

    Too many ('s

    (A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

    Trailing \ in regex m/%s/

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

    Transliteration pattern not terminated

    (F) tr///, tr[][], y///, y[][] 構文の真ん中の区切り文字が 見つかりませんでした。 $tr 変数 や $y 変数の前に $ をつけるのを忘れると このエラーが出ることがあります。

    Transliteration replacement not terminated

    (F) tr///, tr[][], y///, y[][] 構文の最後の区切り文字が 見つかりませんでした。

    '%s' trapped by operation mask

    (F) Safe 区画の中で、許されていない演算子を使おうとしました。 Safe を参照してください。

    truncate not implemented

    (F) このマシンでは、Configure が知りうる、ファイルの切り詰めの機能が 実装されていません。

    Type of arg %d to %s must be %s (not %s)

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

    umask not implemented

    (F) umask 関数が実装されていないマシンで、自分自身の権限を制限する (EXPR & 0700) ためにこれを使おうとしました。

    Unable to create sub named "%s"

    (F) 不正な名前のサブルーチンを作成または呼び出ししようとしました。

    Unbalanced context: %d more PUSHes than POPs

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

    Unbalanced saves: %d more saves than restores

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

    Unbalanced scopes: %d more ENTERs than LEAVEs

    (W internal) いくつのブロックに入って、出たかということの 内部矛盾が exit コードで発見されました。

    Unbalanced tmps: %d more allocs than frees

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

    Undefined format "%s" called

    (F) 示されたフォーマットが存在しないようです。 おそらく本当は他のパッケージにあるのでは? perlform を参照してください。

    Undefined sort subroutine "%s" called

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

    Undefined subroutine &%s called

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

    Undefined subroutine called

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

    Undefined subroutine in sort

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

    Undefined top format "%s" called

    (F) 示されたフォーマットが存在しないようです。 おそらく本当は他のパッケージにあるのでは? perlform を参照してください。

    Undefined value assigned to typeglob

    (W misc) *foo = undef のように、未定義値を型グロブに代入しました。 これは何もしません。 本当は undef *foo としたかったのかもしれません。

    %s: Undefined variable

    (A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

    unexec of %s into %s failed!

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

    Unicode character %s is illegal

    (W utf8) いくつかの Unicode 文字は Unicode 標準によって聖域として 指定されていて、生成されるはずのないものです。 もし自分が何をしているかを本当に理解しているなら、no warnings 'utf8'; で 警告を無効にできます。

    Unknown BYTEORDER

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

    Unknown open() mode '%s'

    (F) 3 引数 open() の 第 2 引数が以下の有効なモードの どれでもありませんでした: <, >, >>, +<, +>, +>>, -|, |-, <&, >&

    Unknown PerlIO layer "%s"

    (W layer) 不明な層をPerl I/O システムに追加しようとしました。 (層はデータの外部表現と内部表現の変換を扱います。) mmap のような層は、全ての環境で対応しているわけではないことに 注意してください。 明示的に失敗する操作を要求していないのであれば、これは環境変数 PERLIO の 値が原因かもしれません。

    Unknown process %x sent message to prime_env_iter: %s

    (P) VMS 固有のエラーです。 Perl は %ENV を反復する前に %ENV から値を読み込み、Perl が想定している データストリームの中に誰かがメッセージを差し込みました。 誰かはとても混乱しているか、邪悪な目的のために %ENV の Perl の集団を 滅亡させようとしています。

    Unknown "re" subpragma '%s' (known ones are: %s)

    "re" プラグマの、不明なサブプラグマを使おうとしました。

    Unknown switch condition (?(%.2s in regex; marked by <-- HERE in m/%s/

    (F) (?(condition)if-clause|else-clause) 構文の条件部が不明です。 条件は先読みまたは戻り読み (先読みまたは戻り読みが真なら条件は真)、 (?{...}) 構文 (コードが真の値に評価されれば真)、 数値 (番号付けされた、捕捉されたかっこの集合が定義されていれば真) の いずれかです。

    <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    Unknown Unicode option letter '%c'

    不明な Unicode オプションを指定しました。 オプションの一覧については、perlrun ドキュメントの -C オプションを 参照してください。

    Unknown Unicode option value %x

    不明な Unicode オプションを指定しました。 オプションの一覧については、perlrun ドキュメントの -C オプションを 参照してください。

    Unknown warnings category '%s'

    (F) warnings プラグマによるエラーです。 現在のところ perl が知らない警告カテゴリを指定しました。

    (use warnings 'File::Find' のように)モジュールによって登録される 警告カテゴリを有効にしたい場合、このモジュールを先にインポートする必要が あることに注意してください。

    Unknown verb pattern '%s' in regex; marked by <-- HERE in m/%s/

    (F) タイプミスをしたか、間違ってパターン中の開き大かっこの後に * 量指定子を書いたかどちらかです。 パターンをチェックして、有効な動詞パターンの詳細については perlre を再チェックしてください。

    unmatched [ in regex; marked by <-- HERE in m/%s/

    (F) 文字クラスの周りの大かっこが一致していません。 文字クラスに閉じ大かっこを含めたい場合は、バックスラッシュをつけるか 先頭に置いてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    unmatched ( in regex; marked by <-- HERE in m/%s/

    (F) 正規表現の中ではバックスラッシュのついていないかっこは常に 対応していなければなりません。 vi ユーザーであれば、% キーが対応するかっこの発見に有用です。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    Unmatched right %s bracket

    (F) 文法解析器が、閉じ中かっこや大かっこが開きかっこよりも多いことを 見つけました; おそらく対応する開きかっこを忘れたのでしょう。 一般的な規則として、忘れたかっこ(そう呼ぶなら)はあなたが最後に編集した 場所の近くにあります。

    Unquoted string "%s" may clash with future reserved word

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

    Unrecognized character %s in column %d

    (F) Perl パーサーは、Perl スクリプト(または eval) で指定された桁数に 出てきた文字に対してどうすればよいか分かりませんでした。 おそらく圧縮したスクリプト、バイナリプログラム、ディレクトリといったものを Perl プログラムとして実行しようとしたのでしょう。

    Unrecognized escape \\%c in character class passed through in regex; marked by <-- HERE in m/%s/

    (W regexp) Perl 内部文字クラスで認識できない、バックスラッシュ-文字の 組み合わせを使いました。 文字はリテラルに理解されます。 <-- HERE で正規表現のどこにエスケープが発見されたかを示しています。

    Unrecognized escape \\%c passed through

    (W misc) Perl が理解できないバックスラッシュ-文字の組み合わせが 使われています。 文字はリテラルに処理されます。

    Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/

    (W regexp) Perl が認識できない、バックスラッシュ-文字の組み合わせが 使われています。 この文字はリテラルに処理されます。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。

    Unrecognized signal name "%s"

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

    Unrecognized switch: -%s (-h will show valid options)

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

    Unsuccessful %s on filename containing newline

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

    Unsupported directory function "%s" called

    (F) このマシンでは、opendir() や readdir() がサポートされていません。

    Unsupported function %s

    (F) このマシンでは、表示した関数は実装されていません。 少なくとも、Configure はそう判断しました。

    Unsupported function fork

    (F) この実行ファイルは fork に対応していません。

    OS/2 のようなシステムには、Perl 実行ファイルにいくつかの種類があり、 fork に対応しているものとしていないものがあります。 Perl を呼び出す時の名前を perl_, perl__ のように 変えてみてください。

    Unsupported script encoding %s

    (F) プログラムファイルが、Perl が読み込めない Unicode エンコーディングを 宣言する Unicode Byte Order Mark (BOM) で始まっています。

    Unsupported socket function "%s" called

    (F) このマシンでは、Berkeley ソケット機構がサポートされていないか、 少なくとも Configure がそう判断しました。

    Unterminated attribute list

    (F) 字句解析器が、属性の先頭として単純な識別子やセミコロンやブロックの 開始でないものを発見しました。 おそらく以前の属性のパラメータリストを早く終端しすぎたのでしょう。 attributes を参照してください。

    Unterminated attribute parameter in attribute list

    (F) 字句解析器が、属性リストをパースしているときに開き(左)かっこを 発見しましたが、対応する閉じ(右)かっこが見つかりませんでした。 かっこのバランスを取るために、バックスラッシュを追加(または削除)する 必要があるでしょう。 attributes を参照してください。

    Unterminated compressed integer

    (F) unpack("w",...) の引数が BER 圧縮整数フォーマットと互換性がなく、 整数に変換できませんでした。 pack in perlfunc を参照してください。

    Unterminated verb pattern in regex; marked by <-- HERE in m/%s/

    (F) (*VERB) の形のパターンを使いましたが、パターンが ) で 終わっていません。 パターンを修正して再挑戦してください。

    Unterminated verb pattern argument in regex; marked by <-- HERE in m/%s/

    (F) (*VERB:ARG) の形のパターンを使いましたが、パターンが ) で 終わっていません。 パターンを修正して再挑戦してください。

    Unterminated \g{...} pattern in regex; marked by <-- HERE in m/%s/

    (F) 正規表現の \g{..} (グループリファレンス) の閉じかっこがありません。 パターンを修正して再挑戦してください。

    Unterminated <> operator

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

    untie attempted while %d inner references still exist

    (W untie) tie (または tied) から返されたオブジェクトが、 untie が呼び出されたときにまだ有効でした。

    Usage: POSIX::%s(%s)

    (F) POSIX 関数を間違った引数で呼び出しました。 さらなる情報については POSIX/FUNCTIONS を参照してください。

    Usage: Win32::%s(%s)

    (F) Win32 関数を間違った引数で呼び出しました。 更なる情報については Win32 を参照してください。

    Useless (?-%s) - don't use /%s modifier in regex; marked by <-- HERE in m/%s/

    (W regexp) (?-o) のような内部修飾子は、正規表現全体から除去されなければ 意味がありません:

        if ($string =~ /(?-o)$pattern/o) { ... }

    これは以下のように書かなければなりません:

        if ($string =~ /$pattern/) { ... }

    <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    Useless localization of %s

    (W syntax) local($x=10) のような左辺値のローカル化は有効ですが、 実際のところ local() は現在のところ何の効果もありません。 これは将来変更されるかもしれませんが、今のところはこのようなコードは 勧められません。

    Useless (?%s) - use /%s modifier in regex; marked by <-- HERE in m/%s/

    (W regexp) (?o) のような内部修飾子は、正規表現全体に適用されなければ 意味がありません:

        if ($string =~ /(?o)$pattern/) { ... }

    これは以下のように書かなければなりません:

        if ($string =~ /$pattern/o) { ... }

    <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

    Useless use of %s in void context

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

        $one, $two = 1, 2;

    以下のようにするべきです。

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

    その他の良くあるエラーとしては、リストを作るのに中括弧や 大括弧を使うべきところで普通の括弧を使うことです。 例えば、以下のように書いた場合です:

        $array = (1,2);

    以下のように書くべきです:

        $array = [1,2];

    角かっこはリスト値を明示的にスカラ値に変換しますが、かっこは変換しません。 そのため、かっこで括られたリストをスカラコンテキストで評価すると、 カンマは C のカンマ演算子のように扱われ、左側の引数は捨てられます; これは望んでいることではないでしょう。 これに関するさらなる情報については perlref を参照してください。

    この警告は、0 か 1 と等しい数値定数では起きません; なぜなら、 しばしば以下のような文で使われるからです:

        1 while sub_with_side_effects();

    通常 0 か 1 に評価される文字列定数は警告されます。

    Useless use of "re" pragma

    (W) use re; プラグマを引数なしで指定しました。これは無意味です。

    Useless use of sort in scalar context

    (W void) こんな風に、ソートをスカラコンテキストで使いました:

        my $x = sort @y;

    これは全く便利ではないので、perl は現在のところ最適化して取り除きます。

    Useless use of %s with no values

    (W syntax) push(@x)unshift(@foo) のようにして、push() 関数や unshift() 関数を、配列以外の引数なしで使いました。 これは普通は配列に何の影響も与えないので、完全に無意味です。 理論的には、配列が tie されているクラスの PUSH メソッドの実装によっては push(@tied_array) が何らかの効果を持つ可能性はあります。 もしそうなら、これを push(@tied_array,()) のように書くことで警告を 回避できます。

    "use" not allowed in expression

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

    Use of bare << to mean <<"" is deprecated

    (D deprecated, W syntax) ヒアドキュメントの終端子として空行を 使いたいときには、明示的にクォートされた形を使うことを推奨しています。

    Use of comma-less variable list is deprecated

    (D deprecated, W syntax) フォーマットに与えた値は単に行で 並べるのではなくて、カンマで区切るべきです。

    Use of chdir('') or chdir(undef) as chdir() deprecated

    (D deprecated) 引数なしの chdir() は、$ENV{HOME} か $ENV{LOGDIR} に 変更すると文書化されています。 chdir(undef) と chdir('') も同じふるまいをしますが、これは非推奨です。 将来のバージョンでは単に失敗するでしょう。

    chdir() に渡すものが定義されていて、空白ではないことをチェックするように 注意してください; さもないとホームディレクトリに 移動してしまうかもしれません。

    Use of /c modifier is meaningless in s///

    (W regexp) 置換で /c 修飾子を使いました。 /c は置換では現在のところ無意味です。

    Use of /c modifier is meaningless without /g

    (W regexp) 正規表現オペランドに /c 修飾子を使いましたが、/g 修飾子は 使いませんでした。 現在のところ、/c は /g が使われたときにのみ有効です。 (これは将来変更されるかもしれません。)

    Use of freed value in iteration

    (F) おそらくループの中で反復される配列を変更したのでは? このエラーは典型的には以下のようなコードで発生します:

        @a = (3,4);
        @a = () for (1,2,@a);

    反復中の配列は変更してはいけないことになっています。 速度と効率上の理由から、Perl 内部では反復されたアイテムの参照カウントを 完全には数えていません; 従って反復中のアイテムのを削除すると Perl は 解放された値を見ることになります。

    Use of *glob{FILEHANDLE} is deprecated

    (D deprecated) 型グロブの中のファイルハンドルスロットにアクセスするには、 より短い *glob{IO} の形を使うことを推奨されています。

    Use of /g modifier is meaningless in split

    (W regexp) split 演算子のパターンで /g 修飾子を使いました。 split は常にパターンを繰り返しマッチングしようとするので、 /g は効果がありません。

    Use of implicit split to @_ is deprecated

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

    Use of inherited AUTOLOAD for non-method %s() is deprecated

    (D deprecated) (エヘン)偶発的な仕様によって、AUTOLOAD サブルーチンは、 autoload されるサブルーチンがメソッド (Foo->bar()$obj->bar()) ではなく、普通の関数 (Foo::bar()) として 呼び出された場合にも、(@ISA 階層を使って) メソッドとして検索します。

    このバグは、メソッドの検索をメソッドの AUTOLOAD のみで使うことによって 将来修正される予定です。 しかし、現在のコードの大部分は古い振る舞いを使っています。 それで、暫定的なステップとして、Perl は現在のところは、 メソッド以外が継承されたAUTOLOAD を使うときにオプションの警告を 発生させます。

    単純な規則は: 継承は autoload された非メソッドには動作しません。 古いコードを修正する簡単な方法は: BaseClass という名前の基底クラスから 非メソッドのための継承した AUTOLOAD に依存しているモジュールに対して、 開始時に *AUTOLOAD = \&BaseClass::AUTOLOAD を実行してください。

    use AutoLoader; @ISA = qw(AutoLoader); としているコードでは、 @ISA から AutoLoader を取り除いて、use AutoLoader;use AutoLoader 'AUTOLOAD'; に変更するべきです。

    Use of %s in printf format not supported

    (F) C でのみアクセス可能な printf の機能を使おうとしました。 これは普通 Perl で行うより良い方法があります。

    Use of %s is deprecated

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

    Use of -l on filehandle %s

    (F) ファイルはオープンされたファイルを表わすものであり、 ファイルをオープンしたときには、探しているシンボリックリンクは、 既に通り過ぎた後です。 この操作は undef を返します。 代わりにファイル名を使ってください。

    Use of "package" with no arguments is deprecated

    (D deprecated) package キーワードを、パッケージ名なしで使いました。 それで現在の名前空間はなしになっています。 これは、妥当な構造を不可解な方法で失敗させることになります。 代わりに use strict; を使ってください。

    Use of reference "%s" as array index

    (W misc) リファレンスを配列の添え字として使おうとしました; これはおそらく 望んでいることではないでしょう; なぜなら数値コンテキストでの リファレンスはとても大きな数になることが多いので、普通はプログラマの ミスを意味しています。

    本当にそうしたい場合は、$array[0+$ref] のように、リファレンスを明示的に 数値化してください。 この警告はオーバーロードされたオブジェクトでは発生しません; 数値化と文字列化の演算子をオーバーロードして、何をしているかをわかっていると 仮定できるからです。

    Use of reserved word "%s" is deprecated

    (D deprecated) 示されている裸の単語は予約語です。 将来のバージョンの perl ではこれをキーワードとして使う可能性があるので、 使っているコンテキストに適した形で単語をクォートするか、違う名前を 使ってください。 この警告は、サブルーチン名の前に & を付ける(&our())か、 パッケージ修飾子を付ける(Foo::our())ことで消すことができます。

    Use of tainted arguments in %s is deprecated

    (W taint, deprecated) system()exec() に複数の引数を与えましたが、 そのうち少なくとも一つが汚染されています。 これは許されていましたが、将来のバージョンの perl では致命的エラーに なるでしょう。 引数を浄化してください。 perlsec を参照してください。

    Use of uninitialized value%s

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

    何が未定義なのかを見つけ出す助けにするために、perl は(あれば)未定義である 変数名を示します。 それができないような場合では、未定義値を使った操作を示します。 しかし、perl がプログラムを最適化するので、文字通りにはプログラム中に 現れない操作についての警告が表示されるかもしれないことに注意してください。 例えば、"that $foo""that " . $foo に最適化されるので、 たとえプログラム中に 連結 (.) 演算子がなくても . に関する警告が 出ます。

    Using a hash as a reference is deprecated

    (D deprecated) %foo->{"bar"}%$ref->{"hello"} の形で、 ハッシュをリファレンスとして使おうとしました。 5.6.1 以前のバージョンの perl ではこの構文を許していましたが、 そうするべきではありません。 これは今では非推奨であり、将来のバージョンでは削除されるでしょう。

    Using an array as a reference is deprecated

    (D deprecated) @foo->[23]@$ref->[99] の形で、 配列をリファレンスとして使おうとしました。 5.6.1 以前のバージョンの perl ではこの構文を許していましたが、 そうするべきではありません。 これは今では非推奨であり、将来のバージョンでは削除されるでしょう。

    UTF-16 surrogate %s

    (W utf8) コードポイントが 0xD800 から 0xDFFF までの Unicode 文字を 要求することで UTF-16 サロゲートの半分を生成しようとしました。 この範囲は UTF-16 エンコーディングのために(2 つの 16 ビット UCS-2 文字を 持つことで)予約されています; しかし Perl はこの文字を UTF-8 で エンコードするので、得られるものは不正な文字となります。 本当に何をしているのか分かっている場合は、no warnings 'utf8'; と することで警告を消すことができます。

    Value of %s can be "0"; test with defined()

    (W misc) 条件式の中で、<HANDLE>, <*> (グロブ), each(), readdir() を 真偽値として使いました。 これらの構文は値 "0" を返すことがあります; これは条件式では偽を示しますが、 これはおそらく望んでいることではないでしょう。 これらの構文を条件式の中で使うときは、その値を defined 演算子で テストしてください。

    Value of CLI symbol "%s" too long

    (W misc) VMS 固有の警告です。 Perl は CLI シンボルテーブルから %ENV 要素の値を読み込もうとしましたが、 結果の文字列が 1024 文字を越えました。 返り値は 1024 文字に切り詰められます。

    Variable "%s" is not available

    (W closure) コンパイル中に、内側の名前付きサブルーチンや eval が まだ利用可能でない外側のレキシカルを捕捉しようとしました。 これは 2 つの理由の 1 つで起こります。 まず、外側のレキシカルが、まだ作成されていない外側の無名サブルーチンで 定義されている場合です。 (名前付きサブルーチンはコンパイル時に作成されますが、無名サブルーチンは 実行時に作成されることを思い出してください。) 例えば、

        sub { my $a; sub f { $a } }

    f が作成された時点で、$a の現在の値を捕捉できません; なぜなら無名サブルーチンはまだ作成されていないからです。 逆に、以下のものは、無名サブルーチンがすでに作成されていて有効なので、 警告は出ません:

        sub { my $a; eval 'sub f { $a }' }->();

    2 番目の状況は eval がスコープ外となった変数にアクセスすることで起こります; 例えば:

        sub f {
            my $a;
            sub { eval '$a' }
        }
        f()->();

    ここで、eval の中の '$a' がコンパイルされるとき、f() はまだ 実行されていないので、この $a は捕捉出来ません。

    Variable "%s" is not imported%s

    (F) "use strict" が有効のときに、見たところ他のモジュールから インポートされたとあなたが考えたグローバル変数を参照しました; なぜなら同じ名前の何か他のもの(通常はサブルーチン)がそのモジュールから エクスポートされています。 これは普通は変数の前に間違ったおかしな文字を置いたことを意味します。

    Variable length lookbehind not implemented in m/%s/

    (F) 後方参照は長さが固定で、コンパイル時に確定している副式に対してのみ可能です。 perlre を参照してください。

    "%s" variable %s masks earlier declaration in same %s

    (W misc) 現在のスコープや文で "my", "our", "state" 変数が再宣言されたので、 以前の実体への全てのアクセスができなくなりました。 これはほとんどの場合タイプミスです。 以前の変数は、スコープが終わるか、それを参照している全てのクロージャが 破壊されるまでは存在し続けることに注意してください。

    Variable syntax

    (A) スクリプトを perl ではなく csh で実行しようとしました。 #! 行をチェックするか、スクリプトを直接 Perl で起動してください。

    Variable "%s" will not stay shared

    (W closure) 内部の(ネストした) 名前付き サブルーチンが、 外側の名前付きサブルーチンで定義したレキシカル変数を参照しています。

    内側のサブルーチンが呼び出された時、外側のサブルーチンの値は、最初の外側の サブルーチンへの呼び出し前および呼び出し中のものになります; この場合、外側のサブルーチンへの最初の呼び出しが終了した後、内側と 外側のサブルーチンは変数に関して同じ値を共有しなくなります。 言い換えると、変数はもはや共有されません。

    この問題は普通、sub {} 構文を使って内側のサブルーチンを無名にすることで 解決します。 外側のサブルーチンの変数を参照している内側の無名サブルーチンが 作成されたとき、これらはそのような変数の現在の値に自動的に回復します。

    Verb pattern '%s' has a mandatory argument in regex; marked by <-- HERE in m/%s/

    (F) 引き数が必要な動詞パターンを使いました。 引き数を追加するか、正しい動詞を使ってください。

    Verb pattern '%s' may not have an argument in regex; marked by <-- HERE in m/%s/

    (F) 引き数が認められていない動詞パターンを使いました。 引き数を削除するか、正しい動詞を使ってください。

    Version number must be a constant number

    (P) use Module n.n LIST 文を等価な BEGIN ブロックに変換しようと したときに、バージョン番号について内部の不整合を発見しました。

    Version string '%s' contains invalid data; ignoring: '%s'

    (W misc) バージョン文字列の末尾に不正な文字が含まれていたので、その文字は 無視されます。

    Warning: something's wrong

    (W) warn() に空文字列を渡した (warn "" と透過です) か、 引数なしで呼び出され、$@ も空でした。

    Warning: unable to close filehandle %s properly

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

    Warning: Use of "%s" without parentheses is ambiguous

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

        rand + 5;

    以下の同じことと思うかもしれませんが:

        rand() + 5;

    実際には以下のようになります:

        rand(+5);

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

    Wide character in %s

    (S utf8) Perl が(想定していないところで)ワイド文字(>255)に遭遇しました。 この警告は、(print のような) I/O に対してはデフォルトでオンです。 この警告を黙らせる最も簡単な方法は、binmode STDOUT, ':utf8' のように 出力に単に :utf8 層を追加することです。 もう一つの方法は no warnings 'utf8'; を追加することですが、これは しばしばいかさまに近い方法です。 一般的に、ファイルハンドルにはエンコーディングを明示的に指定することに なっています; openbinmode in perlfunc を参照してください。

    Within []-length '%c' not allowed

    (F) (un)pack テンプレートの繰り返し数は、TEMPLATE が常に テンプレートだけから決定される同じサイズの pack されたバイト列と一致する 場合にのみ [TEMPLATE] によって置き換えられます。 これは、コード @, /, U, u, w や、長さ * が含まれていると不可能です。 テンプレートを再設計してください。

    write() on closed filehandle %s

    (W closed) 書き込みを行なおうとしたファイルハンドルは、既に閉じられています。 制御フローをチェックしてください。

    %s "\x%s" does not map to Unicode

    異なったエンコーディングを読み込むとき、Perl は全てを Unicode 文字に マッピングしようとします。 読み込んだバイトはこのエンコーディングでは不正でした; 例えば:

        utf8 "\xE4" does not map to Unicode

    というのは、Latin-1 の a 分節を UTF-8 として読み込もうとした場合です。

    'X' outside of string

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

    'x' outside of string in unpack

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

    YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!

    (F) (このカーネルでは、SET-ID スクリプトが禁止されていません!) そして、そうすることはできないでしょう。 カーネルのソースはお持ちではないでしょうし、ベンダも欲しいものを 提供してはくれないでしょうから。 もっとも良いのは、スクリプトに setuid C ラッパーを被せることです。

    You need to quote "%s"

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

    Your random numbers are not that random

    (F) ハッシュのための乱数の種を初期化しようとしたとき、Perl はシステムから 何の乱数性も得られませんでした。 これは普通「何かとても具合が悪い」ことを示しています。


    SEE ALSO

    warnings, perllexwarn.