2009-09-16 49 views
11

我正在編寫運行各種外部命令的代碼以及可能會失敗的各種文件系統命令。是否有任何Perl模塊可以阻止我將「或死」添加到任何可能失敗的東西?

是否有任何模塊可以爲我節省將or die添加到任何可能失敗的問題?

我希望能夠包裹在下面的內容,這樣,而不是:

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

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

我得到:

some_wrapper_code { 
    mkdir $dirname; 

    system("some external command"); 
} 

例如,如果mkdir失敗,它會告訴我,失敗在mkdir,如果system失敗,它會告訴我,失敗在system

回答

32

是的。查看CPAN的autodie

從文檔:

autodie編譯指示提供了一種方便的方法,以取代正常返回
假失敗與拋上失敗的異常等同的功能。

autodie pragma的詞法作用域,這意味着與 autodie改變功能和子程序將僅改變他們的行爲,直到封閉塊,文件的末尾,或 eval

+11

並且從Perl 5.10.1開始,autodie包含在覈心中。 http://perldoc.perl.org/perl5101delta.html#New-Modules-and-Pragmata – oylenshpeegul 2009-09-16 10:57:08

相關問題