2009-09-16 4 views
11

私はあらゆる種類の外部コマンドと、失敗するさまざまなファイルシステムコマンドを実行するコードを書いています。失敗する可能性のあるものに `die die`を追加しないようにするPerlモジュールはありますか?

エラーのあるものにor dieを追加する手間を省くモジュールはありますか?

私はその代わりのようなものに次のようにラップできるようにしたいと思います:

mkdir $dirname or die "can't create directory $dirname"; 

system("some external command") or die "can run some external command"; 

私が手:

mkdirが失敗した場合にそれがあることを私に教えてあげるよう
some_wrapper_code { 
    mkdir $dirname; 

    system("some external command"); 
} 

失敗はmkdirにあり、systemが失敗した場合は、失敗がsystemにあったことがわかります。

答えて

32

イエップ。 CPANのautodieをチェックしてください。ドキュメントから

autodieプラグマは、通常、失敗した場合に例外をスロー同等で失敗した場合に
偽を返す関数を置き換えるための便利な方法を提供します。

autodieプラグマは autodieで変更関数とサブルーチンのみ囲みブロック、ファイル、または evalの終わりまでその動作を変更することを意味し、字句スコープを有しています。

+11

そして、Perl 5.10.1から始めると、autodieがコアに含まれています。 http://perldoc.perl.org/perl5101delta.html#New-Modules-and-Pragmata – oylenshpeegul

関連する問題