我有一个Perl脚本,需要几个插件,用于istance nmap。我怎样才能看到插件是否已经安装,如果他们不是,安装它们?我尝试了下面的代码,但它不能很好地工作,我试图做的是捕获“bash:nmap:command not found”输出。我尝试了stdout和stderr。如何查看一个插件是否已经与Perl一起安装
print "Checking nmap...\n";
my ($stdout, $stderr) = capture {
system("nmap");
};
if ($stdout=~m/command not found/) {
print "nmap not found, installing...\n";
system("rpm -i nmap-4.75-1.26.x86_64.rpm");
}
else {
print "nmap is already installed.\n";
}
你能解释第三行吗?我不喜欢使用我不明白的代码:D – raz3r 2012-03-21 09:12:53
这是通常对'system'的错误检查。我只是简单地使用[File :: Which](http://p3rl.org/File::Which),或者如果'system'无法避免,至少[将错误检查留给IPC :: System :: Simple ](http://stackoverflow.com/a/3478060)。 – daxim 2012-03-21 11:44:31
$?包含该命令的退出值。命令在shell中执行$ so?较低的128位包含外壳错误,较高的128位包含实际的脚本错误。 – user1126070 2012-03-21 11:45:21