我想对perl中的目录路径执行命令行参数解析。我想让这个参数成为可选的。因此,当用户给出path时,它显示为赋值给一个变量$release_model,否则它将执行我为从主目录查找目录而编写的其他代码。我是perl的新手,但不知何故编写了以下代码。有人能帮上忙吗?
Getopt::Long
my $command_line = $GetOptions(\%Opts, "help|h","email=s@","test","model");
if($command_line==0){
print "$PROGRAM: no arguments are given";
Usage{};
}
else die "No arguments were given"
但它不接受model作为可选参数,并抛出错误。
我刚刚开始使用perl。
发布于 2015-09-30 23:22:26
很难猜测你到底想要什么,因为提供的代码包含许多错误和其他没有描述的功能。但是,为了从简单的东西开始学习,我希望有一些东西符合您的要求。
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my $release_model = '/path/to/"main directory"'; # default value
GetOptions( 'model=s' => \$release_model )
or die("Error in command line arguments\n");
print "Release model is: $release_model\n";
如果您将其保存到一个文件(例如my_program.pl
)并使其可执行,那么您可以看到它提供了以下功能:
./my_program.pl
的默认值。model
调用它(例如./my_program.pl --model /another/directory
),则提供的值会分配给您使用错误参数(例如./my_program.pl --mdoel
)调用它,它会打印合理的错误消息并退出。你自己试试吧。如果您想做一些严肃的工作,请阅读一些关于Perl的教程。
https://stackoverflow.com/questions/32872213
复制相似问题