我的程序接受命令行参数。
test.pl --help
我想在代码中启用“帮助”选项。如何在代码中打印用法?
#!/usr/bin/perl
use strict;
use warnings;
use Cwd 'chdir';
use Getopt::Long;
my ($application,$version, $location,$artifactid,$pomversion,$groupid);
GetOptions('application=s' => \$application,
'version=s' => \$version,
'location=s' => \$location,
'artifactid=s' => \$artifactid,
'pomversion=s' => \$pomversion,
'groupid=s' => \$groupid)
or die "Usage od the script: $!\n";
print "$application, $version, $location, $artifactid, $versionnumber, $groupid \n";
if($application eq 'abc')
{ chdir("/var/ccabc/dst_${application}_${version}/abc/${location}") or die "Cannot Change Directory: $!\n";
print $ENV{PWD};
do_compile();
}
我尽力了......
答案 0 :(得分:2)
您是否阅读了{{3}}的文档?你知道getopts()
函数是如何工作的吗?
getopts()
的第一个参数是定义您希望它解析的选项的字符串。所以你需要在该字符串中加上'h'。
getopts('a:v:l:h', \%opts);
正如您在文档中看到的那样,现有选项后面的':'表示它们需要在命令行上跟随它们的值(例如-a foobar
)。 -h
选项不需要,因此我们没有':'。
getopts()
的第二个参数是对将使用您的选项填充的哈希的引用。由于您的新-h
选项没有值,如果在命令行上给出选项,则散列中的'h'键将被赋予值1。因此,您需要做的就是检查该值并采取适当的措施。
if ($opts{h}) {
# display your help message
exit;
}
但是,实际上,所有这些都在文档中。如果我们知道您在文档中发现的内容很困难,那么我们就可以对其进行改进。
答案 1 :(得分:1)
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Std;
use Cwd 'chdir';
sub usage {
print <<'HERE';
tbd
HERE
exit;
}
my %opts = ();
getopts('a:v:l:h', \%opts);
$opts{h} && usage();
my $application = $opts{a};
my $version = $opts{v};
my $location = $opts{l};
print "$application, $version, $location\n";
if ($application eq 'abc') {
chdir "/viewstore/ccwww/dst_${application}_${version}/abc/${location}";
print $ENV{PWD};
} ## end if ($application eq 'abc')