我需要知道如何在Perl中自定义错误。例如,下面是一些代码:
my $filename = 'filaname1.exe';
print "Copying $filename";
copy("$dir_root\\$filename", "$spcl_dir\\$filename");
if ($? == "0") {
print " - Success!\n";
}
else { print " - Failure!\n"; }
我尝试编写此代码并“捕获”错误,并在没有得到退出代码0时显示“失败”,并在出现错误时显示“成功”。我需要知道如何自定义它。我真的不想使用
die
或类似的东西,它会给最终用户带来一些神秘的错误。谢谢!
最佳答案
您需要阅读$上的文档吗?在perlvar中。该值为:
The status returned by the last pipe close, backtick ("``") command, successful call to wait() or waitpid(), or from the system() operator.
您对复制的调用(大概是从File::Copy进行的)与这些类别都不远,因此$?没有设置。
但是,如果您阅读File::Copy的文档,则会看到其功能全部为“成功返回1,失败返回0”。因此,您可以简化很多代码。
#!/usr/bin/perl
use strict; use warnings;
use File::Copy;
if (copy('notthere', 'somewhere else')) {
warn "success\n";
} else {
warn "failure: $!\n";
}
请注意,我使用“警告”而不是“打印”,以便将错误归结到STDERR。注意,还要使用$!显示操作系统错误。当然,如果不够用户友好,可以将其省略。
关于perl - Perl-自定义错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278552/