argra****@users*****
argra****@users*****
2007年 11月 8日 (木) 20:39:56 JST
Index: docs/perl/5.8.8/perldiag.pod diff -u docs/perl/5.8.8/perldiag.pod:1.2 docs/perl/5.8.8/perldiag.pod:1.3 --- docs/perl/5.8.8/perldiag.pod:1.2 Thu Nov 8 05:25:42 2007 +++ docs/perl/5.8.8/perldiag.pod Thu Nov 8 20:39:56 2007 @@ -1730,22 +1730,21 @@ =end original (S) VMS 特有の警告です。 -This arises because of the difference -between access checks under VMS and under the Unix model Perl assumes. -Under VMS, access checks are done by filename, rather than by bits in -the stat buffer, so that ACLs and other protections can be taken into -account. Unfortunately, Perl assumes that the stat buffer contains all -the necessary information, and passes it, instead of the filespec, to -the access checking routine. It will try to retrieve the filespec using -the device name and FID present in the stat buffer, but this works only -if you haven't made a subsequent call to the CRTL stat() routine, -because the device name is overwritten with each call. If this warning -appears, the name lookup failed, and the access checking routine gave up -and returned FALSE, just to be conservative. (Note: The access checking -routine knows about the Perl C<stat> operator and file tests, so you -shouldn't ever see this warning in response to a Perl command; it arises -only if some internal code takes stat buffers lightly.) -(TBT6) +これは VMS と、Perl が仮定している Unix モデルでは、アクセスチェックに違いが +あることによって起こります。 +VMS では、アクセスチェックは stat バッファのビットではなくファイル名によって +行われるので、ACL やその他の保護が考慮されます。 +残念ながら、Perl は stat バッファに全ての必要な情報が含まれていると仮定して、 +アクセスチェックルーチンにはファイルスペックではなくこれを渡します。 +stat バッファにあるデバイス名と FID を使ってファイルスペックを +取得しようとしますが、これは引き続いて CRTL stat() ルーチンを呼び出さない +場合にのみ動作します; なぜならデバイス名は呼出し毎に上書きされるからです。 +この警告が出ると、名前の検索が失敗し、アクセスチェックルーチンは諦めて、 +安全のためだけに FALSE を返します。 +(注意: アクセスチェックルーチンは Perl の C<stat> 演算子とファイル +テストについて知っているので、Perl コマンドの結果としてこの警告を見ることは +ないはずです; これは内部コートが stat バッファを軽率に扱った場合にのみ +発生します。) =item Can't get pipe mailbox device name @@ -2870,16 +2869,18 @@ =end original -(W regexp) The regular expression engine uses recursion in complex -situations where back-tracking is required. Recursion depth is limited -to 32766, or perhaps less in architectures where the stack cannot grow -arbitrarily. ("Simple" and "medium" situations are handled without -recursion and are not subject to a limit.) Try shortening the string -under examination; looping in Perl code (e.g. with C<while>) rather than -in the regular expression engine; or rewriting the regular expression so -that it is simpler or backtracks less. (See L<perlfaq2> for information -on I<Mastering Regular Expressions>.) -(TBT6) +(W regexp) 正規表現エンジンはバックトラックが要求される複雑な状況では +再帰を使用します。 +再帰の深さは 32766、またはスタックを任意に増やせないアーキテクチャでは +おそらくもっと小さい値に制限されています。 +(「単純な」または「中くらいの」状況では再帰なしで扱われるので、制限は +ありません。) +調べる文字列を短くしてみてください; 正規表現エンジンではなく +(C<while> などの) Perl コードを使ってループするか、 +あるいは正規表現をより単純にしたり、バックトラックが少なくなるように +書き換えてください。 +(I<Mastering Regular Expressions> の情報については L<perlfaq2> を +参照してください。) =item cond_broadcast() called on unlocked variable @@ -3951,19 +3952,19 @@ =end original -(W glob) Something went wrong with the external program(s) used for -C<glob> and C<< <*.c> >>. Usually, this means that you supplied a -C<glob> pattern that caused the external program to fail and exit with a -nonzero status. If the message indicates that the abnormal exit -resulted in a coredump, this may also mean that your csh (C shell) is -broken. If so, you should change all of the csh-related variables in -config.sh: If you have tcsh, make the variables refer to it as if it -were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all -empty (except that C<d_csh> should be C<'undef'>) so that Perl will -think csh is missing. +(W glob) C<glob> や C<< <*.c> >> のために使われる外部プログラムに何か問題が +発生しました。 +通常、これは外部プログラムが失敗して非 0 のステータスで終了するような +C<glob> パターンが渡されたことを意味します。 +このメッセージがコアダンプを引きおこした異常終了を示している場合、 +csh (C シェル) が壊れていることを意味しているかもしれません。 +もしそうなら、config.sh の全ての csh 関連の変数を変更するべきです: +もし tcsh があるなら、(C<full_csh='/usr/bin/tcsh'> のように) tcsh を +参照するように変数を設定します; +さもなければ、関連する全ての変数を空にする(例外として C<d_csh> は +C<'undef'> に設定するべきです)ことで、Perl は csh がないものと考えます。 どちらの場合でも、config.sh を修正した後、C<./Configure -S> を実行して Perl を再ビルドしてください。 -(TBT6) =item Glob not terminated @@ -4453,13 +4454,13 @@ =end original (S) VMS 特有の警告です。 -Perl keeps track of the number of times -you've called C<fork> and C<exec>, to determine whether the current call -to C<exec> should affect the current script or a subprocess (see -L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so -Perl is making a guess and treating this C<exec> as a request to -terminate the Perl script and execute the specified command. -(TBT6) +Perl は C<fork> と C<exec> を呼び出した回数を数えています; +これは現在の C<exec> 呼び出しが現在のスクリプトかサブプロセスかどちらに +影響を与えるかを決定するためです(L<perlvms/"exec LIST"> を +参照してください)。 +どういうわけか、このカウントがおかしくなったので、Perl はこの C<exec> が +Perl スクリプトを終了させて指定されたコマンドを実行する要求であると +仮定して、そのように扱いました。 =item Internal urp in regex; marked by <-- HERE in m/%s/ @@ -5525,18 +5526,16 @@ =end original -One possible cause for this is that you expected to have imported a -constant to your name space with B<use> or B<import> while no such -importing took place, it may for example be that your operating system -does not support that particular constant. Hopefully you did use an -explicit import list for the constants you expect to see, please see -L<perlfunc/use> and L<perlfunc/import>. While an explicit import list -would probably have caught this error earlier it naturally does not -remedy the fact that your operating system still does not support that -constant. Maybe you have a typo in the constants of the symbol import -list of B<use> or B<import> or in the constant name at the line where -this error was triggered? -(TBT6) +これの原因としてあり得るものの一つは、B<use> や B<import> を使って +名前空間にインポートしたつもりの定数が実際にはインポートされていなかった +場合です; +例えば OS が特定の定数に対応していない場合などです。 +できればインポートしたい定数のリストを明示的に使ってください; +L<perlfunc/use> と L<perlfunc/import> を参照して下さい。 +明示的なインポートリストでおそらくこのエラーをより早く知ることができますが、 +そもそも OS がその定数に対応していないという問題を解決はしません。 +おそらく B<use> や B<import> のシンボルインポートリストの定数か、 +エラーを引き起こした行の定数名をタイプミスしたのでは? =item No command into which to pipe on command line @@ -7073,18 +7072,17 @@ =end original -Exactly what were the failed locale settings varies. In the above the -settings were that the LC_ALL was "En_US" and the LANG had no value. -This error means that Perl detected that you and/or your operating -system supplier and/or system administrator have set up the so-called -locale system but Perl could not use those settings. This was not -dead serious, fortunately: there is a "default locale" called "C" that -Perl can and will use, the script will be run. Before you really fix -the problem, however, you will get the same error message each time -you run Perl. +正確にどのロケール設定が失敗したのかは様々です。 +上記では設定は LC_ALL は "En_US" で、LANG は空でした。 +このエラーは、あなたや OS 供給者やシステム管理者がロケールシステムと呼ばれる +ものをセットアップしましたが、Perl がこれらの設定を使えないことを +検出したことを意味します。 +これは幸いにして致命的ではありません; Perl が使用できる "C" と呼ばれる +「デフォルトロケール」が存在するので、スクリプトは実行されます。 +しかし、本当にこの問題を解決するまでは、Perl を実行する毎に同じエラー +メッセージが表示されます。 本当にこの問題を修正する方法は L<perllocale> の B<LOCALE PROBLEMS> の 章にあります。 -(TBT6) =item Permission denied @@ -10722,12 +10720,9 @@ 無名サブルーチンが一番外側のサブルーチンから呼び出されるか(直接または 間接に)リファレンスされたとき、予想通りに変数は共有されます。 しかし、一番外側のサブルーチンが有効でない時に無名サブルーチンが呼び出されたり -リファレンスされたりすると、 -But if the anonymous subroutine is called or -referenced when the outermost subroutine is not active, it will see the -value of the shared variable as it was before and during the *first* -call to the outermost subroutine, which is probably not what you want. -(TBT6) +リファレンスされたりすると、共有された変数の値は一番外側のサブルーチンへの +最初の呼び出し前および呼び出し中のものになります; +これはおそらく望んでいることではないでしょう。 =begin original