Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在STDERR上显示错误并在Perl中退出?_Perl - Fatal编程技术网

在STDERR上显示错误并在Perl中退出?

在STDERR上显示错误并在Perl中退出?,perl,Perl,我目前实现的错误显示如下所示: #!/usr/bin/env perl error("Something happened"); sub error {say STDERR "Error: ", shift; and exit 1} 我想知道是否有更好的解决办法 我不想使用die,因为对于基本用户来说,带有回溯的输出有时过于神秘。我想要一个简洁明了的信息 事实上,我也这样做 sub verb {say STDERR "Info: ", shift;} sub warning {say STD

我目前实现的错误显示如下所示:

#!/usr/bin/env perl
error("Something happened");

sub error {say STDERR "Error: ", shift; and exit 1}
我想知道是否有更好的解决办法

我不想使用
die
,因为对于基本用户来说,带有回溯的输出有时过于神秘。我想要一个简洁明了的信息

事实上,我也这样做

sub verb {say STDERR "Info: ", shift;}
sub warning {say STDERR "Warning: ", shift;}

die
不输出堆栈跟踪;它仅显示
die
所在的行,甚至可以通过以换行符结束消息来忽略该行

$ perl -e'die "foo\n"'
foo

为什么不使用?@Jens,有两个原因:第一,感觉
Log4Perl
比一个
说STDERR“something”然后退出要复杂得多,第二,
Log4Perl
不是一个核心模块。人们需要安装一个模块来显示错误消息。这听起来有点太复杂,也不是很好。但是重新发明轮子也不是一个好的解决方案。@Jens那么你能为Log4Perl提供一个解决方案来满足我的需要吗?与
一起使用Log::log4perlqw(:easy);Log4perl->easy_init($ERROR);错误“这将被记录”我没有收到预期的消息
错误:这会被记录
退出代码
-1
没有意义。使用非负数。事实上,我喜欢Perl,但这些非常微妙的细节,例如
\n
的效果一直让我困惑。我在哪里可以找到一张有这么多细节的备忘单?