如果找不到我的模块之一,我希望能够向STDERR输出自定义错误消息。
据我了解,如果我使用use命令导入模块,则在执行脚本之前会发现缺少模块,这对实现所需的结果构成了重大问题。
基本上,我正在寻找的Perl等效于在Python中捕获ImportError异常。
要在Perl中捕获异常,您应该使用eval
运算符。如果传递给代码的代码eval
消失了,那么错误消息就会放入其中,$@
供您随意使用。
看起来像这样
use strict;
use warnings;
use 5.010;
BEGIN {
eval 'use Xyz';
if ( $@ ) {
if ( $@ =~ /Can't locate (\S+)/ ) {
warn "$1 isn't installed";
}
else {
die $@;
}
}
}
say 'Continuing...';
输出
Xyz.pm isn't installed at E:\Perl\source\trap use.pl line 9.
Continuing...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句