我想在perl中为目录路径进行命令行参数解析。我想把这个论点作为可选的。 因此,当用户给出路径时,它显示被分配给变量$ 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"
但是它不接受模型作为可选参数并抛出错误。
我刚开始使用perl。
答案 0 :(得分:1)
由于提供的代码包含大量错误和未描述的其他功能,因此很难猜测您究竟是什么。但是,要开始学习简单的东西,我希望这符合您的要求。
#!/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
的情况下调用它,则会使用默认值$release_model
。model
(例如./my_program.pl --model /another/directory
)进行调用,则会将提供的值分配给$release_model
。./my_program.pl --mdoel
),则会打印出合理的错误消息并退出。亲自尝试一下。如果你想做一些认真的工作,那就去看一些关于Perl的教程。