我希望能够做到这一点在Perl(下面的代码是Python的大声笑)
try:
import Module
except:
print "You need module Module to run this program."
有没有人有任何想法如何?
我希望能够做到这一点在Perl(下面的代码是Python的大声笑)
try:
import Module
except:
print "You need module Module to run this program."
有没有人有任何想法如何?
TIMTOWTDI :
eval "use Module; 1" or die "you need Module to run this program".
要么
require Module or die "you need Module to run this program";
Module->import;
要么
use Module::Load;
eval { load Module; 1 } or die "you need Module to run this program";
你可以找到模块::负载上CPAN 。
您可以使用模块::负载条件::
use Module::Load::Conditional qw[can_load check_install requires];
my $use_list = {
CPANPLUS => 0.05,
LWP => 5.60,
'Test::More' => undef,
};
if(can_load( modules => $use_list ))
{
print 'all modules loaded successfully';
}
else
{
print 'failed to load required modules';
}
有做很多的模块; 见列表CPAN模块(可以)装载的其它模块 。 然而,这是一个有点冒险依靠外部模块上(如果它不存在什么呢?)。 嗯,至少,如果依靠驼鹿, 类::负载可以安全地使用,因为它是穆斯的先决条件:
#!/usr/bin/env perl
use strict;
use utf8;
use warnings qw(all);
use Class::Load qw(try_load_class);
try_load_class('Module')
or die "You need module Module to run this program.";
像这样的东西, use Net::SMTP
,如果你已经安装了模块,或潇洒sendmail
标注作为最后的手段。
my $mailmethod = eval "use Net::SMTP; 1" ? 'perl' : 'sendmail';
use strict; use warnings; use Module;
如果您没有安装模块做,你会得到错误“无法找到Module.pm在@公司(@公司包含:......)” 这是足够理解的。
有没有你想/需要更具体的消息,一些特别的原因吗?
以下是我该怎么去了解它:
sub do_optional_thing {
init_special_support();
Module::Special::wow();
}
sub init_special_support {
# check whether module is already loaded
return if defined $INC{'Module/Special'};
eval {
require Module::Special;
Module::Special->import();
};
croak "Special feature not supported: Module::Special not available" if $@;
}