如何使用GetOptions实用程序在Perl中处理“可选”命令行参数? |
您所在的位置:网站首页 › getoptions函数 › 如何使用GetOptions实用程序在Perl中处理“可选”命令行参数? |
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 |