如何使用命令行参数在perl中启动进程?

时间:2011-06-26 23:28:57

标签: perl command-line

有没有办法根据符号启动nmap扫描?我希望能够运行nmap扫描 当我在终端上执行我的代码时:script.pl -b xx.xxx.xxx。我尝试使用if语句执行此操作,但它正在运行。有谁知道hpw能够正确地做到这一点吗?

if("-b")
{
('nmap -v -r ARGS[0] >>file.txt')
}

2 个答案:

答案 0 :(得分:5)

使用perl的 Getopt :: Long 模块,可以轻松解析命令行选项。这是一个例子:

use Getopt::Long;

my ($b);

my $result = GetOptions ("b=s" => \$b);

if ($b) {
    system ('nmap -v -r ' . $b . ' >>file.txt');
}
GetOptions 中的 b = s -b 获取字符串参数,并将其设置为 $ b 变量。

答案 1 :(得分:1)

如果您使用单个字母作为标志 Getopt :: Std 就是您所需要的。

use Getopt::Std;

my %opt;
getopt("b",\%opt);

system "nmap -v -r $opt{b} >> file.txt" if exists $opt{b};

getopt接受一串用作标志的字母,并将它们及其值映射到哈希表。 getopt(“ab”,%opt)会将%opt设置为类似(a =>“foo”,b =>“bar”)的内容,前提是a和b都是在调用脚本时实际使用的。