如何在下面的脚本中启用帮助选项?

时间:2017-06-08 04:42:40

标签: perl

我的程序接受命令行参数。

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();

}

我尽力了......

2 个答案:

答案 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')