【问题标题】:Script does not die if there are incorrect arguments如果参数不正确,脚本不会死
【发布时间】:2019-11-27 07:18:05
【问题描述】:

我对 Perl 编程很陌生。我想使用 GetOptions 来解析我的脚本的输入参数。我有一个简单的问题 - 如果参数混乱或参数缺少值(对于强制参数),我希望脚本退出使用消息。 src_xml 是强制参数,但如果我运行脚本不提供此参数的值,我会收到一条错误消息,提示在tenant_tenant.pl 的 -e 中使用未初始化的值 $src_xml。我究竟做错了什么?还是我必须检查每个变量是否已定义?

my $dev;
my $src_xml;
my $tgt_syscd = 'L86'; 
my $tgt_path = '/tmp/test/exports'; 
my $help;

GetOptions('src_xml=s' => \$src_xml,
        'tgt_syscd=s' => \$tgt_syscd,
        'tgt_path=s' => \$tgt_path,
        'dev' => \$dev,
        'h|help' => \$help
) or die "Usage: perl $0 --src_xml NAME --tgt_syscd NAME  --tgt_path NAME 
\n";

#checking for help
if ( defined $help ) {
    die $help_message;
}

【问题讨论】:

标签: perl getopt


【解决方案1】:

你的脚本只会这样死:

perl ./foo.pl --src_xml=

使用自定义子程序检查参数?

GetOptions(
    'dec-to-base35=i' => \&dec_to_base35,
    'base35-to-dec=s' => \&base35_to_dec,
);

sub dec_to_base35 ( $opt_name, $decimal_value ) {
...

完整示例here

顺便说一句,你可以加入"Perl weekly challenge",这可能有助于学习新东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 2021-12-15
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多