Perl 自定义缺少模块消息
如果找不到我的模块之一,我希望能够向STDERR输出自定义错误消息 据我所知,如果我使用use命令导入模块,那么在执行脚本之前就会发现缺少模块,这对实现我所寻找的结果造成了重大问题Perl 自定义缺少模块消息,perl,error-handling,perl-module,Perl,Error Handling,Perl Module,如果找不到我的模块之一,我希望能够向STDERR输出自定义错误消息 据我所知,如果我使用use命令导入模块,那么在执行脚本之前就会发现缺少模块,这对实现我所寻找的结果造成了重大问题 基本上,我要寻找的是一个与Python中捕获ImportError异常相当的Perl。要捕获Perl中的异常,应该使用eval操作符。如果传递给eval的代码失效,那么错误消息将被放入$@中,供您随意使用 它看起来像这样 use strict; use warnings; use 5.010; BEGIN {
基本上,我要寻找的是一个与Python中捕获ImportError异常相当的Perl。要捕获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...';
输出
要在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...';
输出
您可以使用@INC钩子执行以下操作:
BEGIN { push @INC, sub { Carp::croak "Couldn't find $_[1]" } }
use Xyz;
您可以使用@INC钩子执行以下操作:
BEGIN { push @INC, sub { Carp::croak "Couldn't find $_[1]" } }
use Xyz;
那不是我写的。你需要使用“MyModule”我的旧评论不再有效,它是针对你答案的前一个版本的。不管怎么说,它很有效,谢谢你。这不是我写的。你需要使用“MyModule”我的旧评论不再有效,它是针对你答案的前一个版本的。不管怎样,它很有效,谢谢你。