Perl:如何在没有错误消息的情况下“死”?

Posted

技术标签:

【中文标题】Perl:如何在没有错误消息的情况下“死”?【英文标题】:Perl: How to "die" with no error message? 【发布时间】:2011-12-10 20:16:02 【问题描述】:

我用下面的代码在 perl 中运行一个简单的文件测试:

my $f1 = "$pre_file";

 unless (-e $1) 

 print "\n Pre_check file does not exists! \n";

 die;

  

它打印以下输出:

Pre_check 文件不存在! 死于 ./huawei-postcheck 第 81 行。

但是我不想要最后一行“死于 ./huawei-postcheck line 81。”。

我想在没有错误信息的情况下“死”。

有可能吗?

【问题讨论】:

【参考方案1】:

请参阅die 的文档。

如果 LIST 的最后一个元素不以换行符结尾,则当前 还打印脚本行号和输入行号(如果有), 并提供了一个换行符。

因此,您只需使用 die "\n" 即可在不打印任何内容的情况下开始工作。但是鉴于您有一条错误消息,我看不出您为什么不使用它。

unless (-e $f1) 
  die "\n Pre_check file does not exist!\n";

当然,不同之处在于消息现在将发送到 STDERR 而不是 STDOUT。但这可能是它去的正确地方。

【讨论】:

【参考方案2】:

使用exit 而不是die

【讨论】:

@Arkadiy, die 实际上使用$! || $?>>8 || 255,如果你想模仿它。【参考方案3】:

你可以说

die "\n";

隐藏消息。

【讨论】:

【参考方案4】:

你可能想exit 1而不是死。

【讨论】:

【参考方案5】:
my $f1 = "$pre_file";

unless (-e $1) 
    print "\n Pre_check file does not exists! \n";
    exit 1;

【讨论】:

以上是关于Perl:如何在没有错误消息的情况下“死”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有安装权限的情况下使用新的 Perl 模块?

如何在没有错误消息的情况下调试 ctypes

如何在没有错误消息或异常的情况下调试 PowerShell 进程

如何在没有以下错误消息的情况下安装 ffmpeg-binaries?

如何在没有 root 权限的情况下安装 Perl 模块?

在 Perl 中,如何在没有轮询但有超时的情况下监视文件更改?