Perl 内置退出并在一个命令中打印

发布于 2024-10-19 01:18:20 字数 177 浏览 7 评论 0原文

我知道我可能会死,但这会打印出脚本名称和行号。

我喜欢做类似 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

若有似无的小暗淡 2024-10-26 01:18:20

die 错误消息中添加换行符会抑制添加的行号/脚本名称措辞:

die "Error\n"

Adding a newline to the die error message suppresses the added line number/scriptname verbage:

die "Error\n"
温柔少女心 2024-10-26 01:18:20

您可以在 die 字符串中追加一个新行,以防止 perl 添加行号和文件名:

die "oh no!\n" if condition;

或者编写一个函数:

sub bail_out {print @_, "\n"; exit}

bail_out 'oh no!' if condition;

另请记住,die 打印到 stderr,而 print 默认为标准输出。

You can append a new line to the die string to prevent perl from adding the line number and file name:

die "oh no!\n" if condition;

Or write a function:

sub bail_out {print @_, "\n"; exit}

bail_out 'oh no!' if condition;

Also keep in mind that die prints to stderr while print defaults to stdout.

离鸿 2024-10-26 01:18:20

您可以使用听起来相当自然的方式:

print "I'm going to exit now!\n" and exit if $condition;

如果您有 perl 5.10 或更高版本,并将例如 use 5.010; 添加到脚本顶部,您还可以使用 say 来避免自己添加换行符:

say "I'm going to exit now!" and exit if $condition;

You could use the fairly natural-sounding:

print "I'm going to exit now!\n" and exit if $condition;

If you have perl 5.10 or above and add e.g. use 5.010; to the top of your script, you can also use say, to avoid having to add the newline yourself:

say "I'm going to exit now!" and exit if $condition;
逆光飞翔i 2024-10-26 01:18:20

这是您在给 Eric 的评论中完成的问题的答案。

要同时执行这两种操作(打印 STDOUT 并打印不带行号的内容),您仍然可以通过更改 die 来使用 die代码>__DIE__ 处理程序:

$SIG{__DIE__} = sub { print @_, "\n"; exit 255 };

die "error" if $problem;

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:

$SIG{__DIE__} = sub { print @_, "\n"; exit 255 };

die "error" if $problem;
稳稳的幸福 2024-10-26 01:18:20

您可以使用 sprintf 创建复杂的消息:

die sprintf( ... ) if $problem;

You can create complex messages with sprintf:

die sprintf( ... ) if $problem;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文