-1

-p または -n フラグを付けて perl を使用したり、存在しないファイルに対してダイヤモンド演算子を使用しても、エラーで終了しません:

$ perl -pe '' badfile || echo error
Can't open badfile: No such file or directory.
$
$ perl -ne '' badfile || echo error
Can't open badfile: No such file or directory.
$
$  perl -e 'print while <>' badfile || echo error
Can't open badfile: No such file or directory at -e line 1.
$

不良ファイルが与えられたときに、警告だけでなくエラーをスローするように perl に強制するにはどうすればよいですか?

4

1 に答える 1

1

local $SIG{__WARN__} = sub { die @_ };エラーをスローする警告ハンドラを設定するために使用します。

$ # Put handler code in BEGIN block for -p and -n:
$ perl -pe 'BEGIN{$SIG{__WARN__}=sub{die @_}}' badfile || echo error
Can't open badfile: No such file or directory.
error
$
$ perl -ne 'BEGIN{$SIG{__WARN__}=sub{die @_}}' badfile || echo error
Can't open badfile: No such file or directory.
error
$
$ perl -e '$SIG{__WARN__}=sub{die @_}; print while <>;' badfile || echo error
Can't open badfile: No such file or directory at -e line 1.
error
$ 
于 2015-06-03T00:38:35.363 に答える