Perl 如何在下面的脚本中启用帮助选项?
我的程序采用命令行参数Perl 如何在下面的脚本中启用帮助选项?,perl,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,
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();
}
我已经尽力了。#/usr/bin/env perl
#!/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')
严格使用;
使用警告;
使用Getopt::Std;
使用Cwd'chdir';
次级用途{
打印#!/usr/bin/env perl
严格使用;
使用警告;
使用Getopt::Std;
使用Cwd'chdir';
次级用途{
打印您阅读了文档吗?您知道getopts()
函数是如何工作的吗
getopts()
的第一个参数是定义要解析的选项的字符串。因此需要在该字符串中添加“h”
getopts('a:v:l:h', \%opts);
正如您在文档中所看到的,现有选项后面的“:”表示它们在命令行上需要一个值(例如-a foobar
)。-h
选项不需要该值,因此我们没有“:”
getopts()
的第二个参数是对将填充选项的哈希的引用。由于新的-h
选项没有值,如果命令行上给出了选项,则哈希中的“h”键将被赋予值1。因此,您只需检查该值并采取适当的操作
if ($opts{h}) {
# display your help message
exit;
}
但是,实际上,所有这些都在文档中。了解您在文档中发现的困难对我们很有帮助,这样我们就可以改进它。您阅读文档了吗?您知道getopts()
函数是如何工作的吗
getopts()
的第一个参数是定义要解析的选项的字符串。因此需要在该字符串中添加“h”
getopts('a:v:l:h', \%opts);
正如您在文档中所看到的,现有选项后面的“:”表示它们在命令行上需要一个值(例如-a foobar
)。-h
选项不需要该值,因此我们没有“:”
getopts()
的第二个参数是对将填充选项的哈希的引用。由于新的-h
选项没有值,如果命令行上给出了选项,则哈希中的“h”键将被赋予值1。因此,您只需检查该值并采取适当的操作
if ($opts{h}) {
# display your help message
exit;
}
但是,事实上,所有这些都在文档中。了解您在文档中发现的困难对我们很有帮助,这样我们就可以改进它。这不是真正的代码。'chir'
?尽管它的名字叫Getopt::Std,但它不是一个好的选择;Getopt::Long需要支持大多数命令使用命令行选项的方式我尝试过getopts::long由于我将命令行参数传递给脚本中的一个变量,所以我遇到了很多异常。这不是真正的代码。'chir'
?尽管它的名称不同,Getopt::Std并不是一个好的选择;Getopt::long需要支持大多数命令使用命令行选项的方式。我尝试了getopts::long之后,我遇到了很多异常我正在将命令行参数传递给scriptUndefined子例程中的一个变量&main::getopts调用于./test1.pl行15。如果您想执行/test1.pl
,应该将shebang行添加到脚本中。shebang/usr/bin/perl
是否正确?如果不正确,请使用/usr/bin/env perl
。尝试调用getopts代码>显式Getopt::Std::getopts
。我刚刚更改了我的%opts=();getopts('a:v:l:h',\%opts);&usage if($opts{h});子用法{print you要求我用Getopt::Std::getoptsUndefined子例程&main::getopts替换代码中的getopts调用./test1.pl行15.shebang行如果你想执行/test1.pl
你的shebang/usr/bin/perl
中的路径正确吗?如果不正确,请使用/usr/bin/env perl
。尝试调用getopts
explicitGetopt::Std::getopts
。我刚刚更改了我的%opts=();getopts('a:v:l:h',\%opts);&use if($opts{h});子用法{print你是要我用Getopt::Std::getopts替换代码中的getopts吗谢谢我得到了逻辑now@mahesh:正如我所说的,了解您以前没有得到的信息将非常有用,这样我们可以改进文档。您提供的getopts函数如何工作的解释类似于“:”帮助我理解了您可以简单介绍Getopts::Long函数,比如我们如何将Getopts:Long的输入传递给变量感谢我得到了逻辑now@mahesh:正如我所说的,了解您以前没有得到的信息将非常有用,这样我们可以改进文档。您提供的getopts函数如何工作的解释像“:”帮助我理解了请解释Getopts::Long函数,比如我们如何将Getopts:Long的输入传递给变量