如何在perl中添加可选参数

时间:2015-09-30 17:24:36

标签: perl

我想在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。

1 个答案:

答案 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)并使其可执行,那么您可以看到它提供以下功能:

  1. 如果您在没有参数./my_program.pl的情况下调用它,则会使用默认值$release_model
  2. 如果您使用参数model(例如./my_program.pl --model /another/directory)进行调用,则会将提供的值分配给$release_model
  3. 如果您使用错误的参数调用它(例如./my_program.pl --mdoel),则会打印出合理的错误消息并退出。
  4. 亲自尝试一下。如果你想做一些认真的工作,那就去看一些关于Perl的教程。