我制作了一个脚本来告知管理员需要在计算机上安装的模块列表。
我正在尝试检查模块是否通过下面的代码安装。奇怪的是,它显示机器中已安装的模块为not installed
#!/usr/bin/perl -w
my @module_list =('Smart::Comments','HTML::Parse');
foreach (@module_list) {
eval { require "$_" };
if (!($@)) {
print "Module Not installed : $_\n";
}
}
您需要使用字符串形式eval
因为require
需要一个裸字参数来匹配模块名称的双冒号分隔形式(例如Scalar::Util
)。 (如果它不是裸字,那么它需要是相对路径,例如'Scalar/Util.pm'
)
#!/usr/bin/perl
use strict;
use warnings;
my @module_list = ('Scalar::Util', 'flibble');
foreach (@module_list) {
if (!eval "require $_") {
print "Module not installed: $_\n";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)