如何使用GetOptions实用程序在Perl中处理“可选”命令行参数?

您所在的位置:网站首页 getoptions函数 如何使用GetOptions实用程序在Perl中处理“可选”命令行参数?

如何使用GetOptions实用程序在Perl中处理“可选”命令行参数?

#如何使用GetOptions实用程序在Perl中处理“可选”命令行参数? | 来源: 网络整理| 查看: 265

Perl教程很多,它们解释了如何使用GetOptions实用工具仅处理期望的命令行参数,否则以适当的消息退出。

根据我的要求,我有以下可选的命令行参数,例如,

-z zip_dir_path:压缩输出 -h:显示帮助。

我尝试了一些对我不起作用的GetOptions组合。 所以我的问题是:如何使用GetOptions处理此要求?

编辑:-z需要'zip目录路径'

编辑2: 我的脚本具有以下强制命令行参数:

-in input_dir_path:输入目录 -out output_dir_path:输出目录

这是我的代码:

12345678my %args; GetOptions(\%args, "in=s", "out=s" ) or die &usage(); die"Missing -in!" unless $args{in}; die"Missing -out!" unless $args{out};

希望此编辑可以增加清晰度。

相关讨论 通常,您调用GetOptions,然后查看最终结果以查看使用了哪些开关。 也许您应该尝试一些尝试来弄清发生了什么以及问题是什么。 @mu太短:我已经更新了问题文本。 感谢您的评论。

:(冒号)可用于指示可选选项:

123456789101112131415#!/usr/bin/env perl use strict; use warnings; use Getopt::Long; my ( $zip, $help, $input_dir, $output_dir ); GetOptions(     'z:s'   => \$zip,     'h'     => \$help,     'in=s'  => \$input_dir,     'out=s' => \$output_dir, ); 相关讨论 我认为,:可以用于指示该命令行开关的字符串值是可选的,而不是用于指示该开关本身是可选的。 我对吗? 是的,你是对的。 尽管我已经接受@Alan Haggai Alavi的答案,但在他的评论中同意@mu is too short的观点,即GetOptions用于列出用户提供的选项,并且脚本必须根据需要进一步处理参数。 究竟; 结果还需要做更多的工作。

从文档中:

1234   : type [ desttype ]        Like"=", but designates the argument as optional.  If omitted, an        empty string will be assigned to string values options, and the        value zero to numeric options.

如果您指定了该选项并检查了空字符串,那么您将知道用户未指定的字符串。

根据在命令行中获得的输入参数,应将$zip_output和$show_help的值设置为1或0。

123456789use strict; use warnings; use Getopt::Long; my $zip_output; my $show_help; GetOptions("z" => \$zip,"h" => \$show_help); 相关讨论 @Tudor Constantin:我已经更新了我的问题文本。 谢谢你的回答。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3