追加を検討してください
use strict;
use warnings;
スクリプトの先頭に移動します。これらのステートメントは、Perlによって黙って無視されるエラーをキャッチするのに役立ちます。さらに、open
呼び出しにエラーチェックを追加することを検討してください。おそらく、実際には開いていません。私はそれを次のように書きます:
use strict;
use warnings;
open(OUTPUT, "> Filter2/filter2.out")
or die "Can't open filter2.out: $!";
open(ERROR, "> Filter2/filter2.err")
or die "Can't open filter2.err: $!";
print OUTPUT "Beginning\n";
print ERROR "Beginning\n";
たとえば、厳密な警告と警告を追加するだけで、次のようになります。
print() on closed filehandle OUTPUT at .\printer.pl line 6.
print() on closed filehandle ERROR at .\printer.pl line 7.
うーん...!
エラーチェックを追加することで、次のようになりました。
PS C:\dev> perl .\printer.pl
Can't open filter2.out: No such file or directory at .\printer.pl line 4.
ああ!見て、私はフォルダを持っていませんでした。フォルダを追加した後、すべてが正常に実行されました。あなたはおそらく似たようなものを見つけるでしょう。
最後に、おそらく最新の字句ファイルハンドルも使用する必要があります。これは、他のエラー(再利用されたハンドル名など)をキャッチするのに役立ちます。したがって、最終的なスクリプトは次のようになります。
use strict;
use warnings;
open(my $output, ">", "Filter2/filter2.out")
or die "Can't open filter2.out: $!";
open(my $error, ">", "Filter2/filter2.err")
or die "Can't open filter2.err: $!";
print $output "Beginning\n";
print $error "Beginning\n";
ビオラ!これで、問題が失敗したときに問題がどこで失敗したかを正確に確認でき、後で作成する他のライブラリやコードが誤ってファイルハンドルに干渉しないことを確認できます。