argra****@users*****
argra****@users*****
2008年 7月 17日 (木) 20:56:59 JST
Index: docs/perl/5.10.0/perlfaq8.pod diff -u docs/perl/5.10.0/perlfaq8.pod:1.6 docs/perl/5.10.0/perlfaq8.pod:1.7 --- docs/perl/5.10.0/perlfaq8.pod:1.6 Sun Jun 29 04:38:57 2008 +++ docs/perl/5.10.0/perlfaq8.pod Thu Jul 17 20:56:59 2008 @@ -884,15 +884,14 @@ =end original -Perl versions before 5.8 had in its C source code signal handlers which -would catch the signal and possibly run a Perl function that you had set -in %SIG. +バージョン 5.8 より前の Perl には、シグナルを受け取って、可能なら %SIG +にセットされている Perl の関数を実行する C ソースコードのシグナルハンドラが +ありました。 これはこのレベルでのシグナルハンドリングのルールに違反していて、perl の コアダンプを引き起こしていました。 バージョン 5.8.0 から、perl はシグナルを捕捉している間ではなく、シグナルを 捕捉した「後に」%SIG を見ます。 この答えの以前のバージョンは間違っていました。 -(TBT) =head2 How do I modify the shadow password file on a Unix system? @@ -1615,16 +1614,17 @@ =end original -If the second argument to a piped open() contains shell -metacharacters, perl fork()s, then exec()s a shell to decode the -metacharacters and eventually run the desired program. If the program -couldn't be run, it's the shell that gets the message, not Perl. All -your Perl program can find out is whether the shell itself could be -successfully started. You can still capture the shell's STDERR and -check it for error messages. +パイプされた open() の第二引数にシェルのメタ文字が含まれている場合、 +perl は fork() し、メタ文字をデコードするためにシェルを exec() し、 +最終的に必要なプログラムを実行します。 +このプログラムが実行できない場合、メッセージを得るのはシェルであって、 +Perl ではありません。 +あなたの Perl プログラムがわかることはシェル自身が正しく開始されたかどうか +だけです。 +エラーメッセージのためにシェルの STDERR を捕捉してチェックするという方法は +あります。 この文書の別の場所にある L<"How can I capture STDERR from an external command?"> を参照するか、IPC::Open3 モジュールを使ってください。 -(TBT) =begin original @@ -2240,12 +2240,11 @@ =end original これはソフト制限とハード制限をそれぞれ 10 秒と 20 秒にセットします。 -After 10 seconds of time spent running on the CPU (not "wall" time), -the process will be sent a signal (XCPU on some systems) which, if not -trapped, will cause the process to terminate. +CPU が 10 秒の時間を消費後("wall" 時間ではありません)、プロセスはシグナル +(システムによっては XCPU)を送り、トラップされなければ、これによりプロセスは +終了します。 シグナルがトラップされると、さらに 10 秒(合計 20 秒)経過後、プロセスは ブロック不可シグナルで kill されます。 -(TBT) =begin original @@ -2289,13 +2288,14 @@ =end original -The DBI module provides an abstract interface to most database -servers and types, including Oracle, DB2, Sybase, mysql, Postgresql, -ODBC, and flat files. The DBI module accesses each database type -through a database driver, or DBD. You can see a complete list of -available drivers on CPAN: http://www.cpan.org/modules/by-module/DBD/ . -You can read more about DBI on http://dbi.perl.org . -(TBT) +DBI モジュールはほとんどのデータベースサーバと型に対する抽象 +インターフェースを提供します; これには Oracle, DB2, Sybase, mysql, +Postgresql, ODBC, フラットファイルを含みます。 +DBI モジュールは、DBD と呼ばれるデータベースドライバを通して各データベース +型にアクセスします。 +利用可能なドライバの完全な一覧は CPAN +(http://www.cpan.org/modules/by-module/DBD/) にあります。 +DBI に関するさらなる情報は http://dbi.perl.org にあります。 =begin original @@ -2408,11 +2408,10 @@ =end original -I get an error when I run this from my shell (which happens to be -bash). That may look like perl forgot it has a print() function, -but my shebang line is not the path to perl, so the shell runs the -script, and I get the error. -(TBT) +これを私のシェル(たまたま bash でした)で実行するとエラーが表示されます。 +これは perl が print() 関数を忘れてしまったかのように見えますが、 +#! 行の perl へのパスが間違っているので、シェルがこのスクリプトを実行し、 +エラーが表示されます。 $ ./test ./test: line 3: print: command not found @@ -2828,29 +2827,35 @@ =end original -include パス, including -environment variables, run-time switches, and in-code statements を +環境変数、実行時スイッチ、コード内の文などを使って、インクルードパスを 変更するためのお薦めの方法を挙げておきます: -(TBT) =over 4 =item the PERLLIB environment variable +(PERLLIB 環境変数) + $ export PERLLIB=/path/to/my/dir $ perl program.pl =item the PERL5LIB environment variable +(PERL5LIB 環境変数) + $ export PERL5LIB=/path/to/my/dir $ perl program.pl =item the perl -Idir command line flag +(perl の -Idir コマンドラインフラグ) + $ perl -I/path/to/my/dir program.pl =item the use lib pragma: +(use lib プラグマ) + use lib "$ENV{HOME}/myown_perllib"; =back @@ -2864,7 +2869,7 @@ =end original 最後のものが特に便利です。 -なぜなら、これはマシン依存のアーキテクチャについてわかるからです。 +なぜなら、これはマシン依存のアーキテクチャを知っているからです。 プラグマ的モジュール(pragmatic module) lib.pm は Perl 5.002 で 最初に導入されました。