我知道我会死,但这会打印出脚本名称和行号。
我喜欢做类似的事情die 'error' if $problem;
有没有办法在不打印行号的情况下做到这一点?
不用大括号就好了if($problem){print 'error';exit}
在die错误消息中添加换行符会抑制添加的行号/脚本名措辞:
die "Error\n"
您可以在 die 字符串中附加一个新行,以防止 perl 添加行号和文件名:
die "oh no!\n" if condition;
或者写一个函数:
sub bail_out {print @_, "\n"; exit}
bail_out 'oh no!' if condition;
还要记住,die
打印到标准错误,而print
默认为标准输出。
你可以使用相当自然的声音:
print "I'm going to exit now!\n" and exit if $condition;
如果您有 perl 5.10 或更高版本并将 eg 添加use 5.010;
到脚本的顶部,您还可以使用say
, 以避免自己添加换行符:
say "I'm going to exit now!" and exit if $condition;
这是您在对 Eric 的评论中完成的问题的答案。
要同时执行(打印 STDOUT 和不打印行号),您仍然可以die
通过更改__DIE__
处理程序来使用:
$SIG{__DIE__} = sub { print @_, "\n"; exit 255 };
die "error" if $problem;
您可以使用以下命令创建复杂的消息sprintf
:
die sprintf( ... ) if $problem;