Perl 内置退出并在一个命令中打印
我知道我可能会死,但这会打印出脚本名称和行号。
我喜欢做类似 die 'error' if $problem;
有没有办法在不打印行号的情况下做到这一点?
最好不必使用大括号 if($problem){print 'error';exit}
I know I can die but that prints out the script name and line number.
I like to do things like die 'error' if $problem;
Is there a way to do that without printing line number stuff?
It would be nice not to have to use braces if($problem){print 'error';exit}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 die 错误消息中添加换行符会抑制添加的行号/脚本名称措辞:
Adding a newline to the die error message suppresses the added line number/scriptname verbage:
您可以在 die 字符串中追加一个新行,以防止 perl 添加行号和文件名:
或者编写一个函数:
另请记住,
die
打印到 stderr,而print 默认为标准输出。
You can append a new line to the die string to prevent perl from adding the line number and file name:
Or write a function:
Also keep in mind that
die
prints to stderr whileprint
defaults to stdout.您可以使用听起来相当自然的方式:
如果您有 perl 5.10 或更高版本,并将例如
use 5.010;
添加到脚本顶部,您还可以使用say
来避免自己添加换行符:You could use the fairly natural-sounding:
If you have perl 5.10 or above and add e.g.
use 5.010;
to the top of your script, you can also usesay
, to avoid having to add the newline yourself:这是您在给 Eric 的评论中完成的问题的答案。
要同时执行这两种操作(打印 STDOUT 并打印不带行号的内容),您仍然可以通过更改
die
来使用die
代码>__DIE__ 处理程序:Here is an answer to the question you completed in you comment to Eric.
To do both (print STDOUT and print without line number) you can still use
die
by changing the__DIE__
handler:您可以使用 sprintf 创建复杂的消息:
You can create complex messages with
sprintf
: