perl 如何使用Getopt::Std响应--help标志?

f8rj6qna  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(152)

我希望我的脚本在使用--help命令行选项运行时打印一条帮助消息。根据Getopt::Std文档,此sub应该可以实现此功能:

#!/usr/bin/env perl
use strict;
use warnings;
use 5.014;
use Getopt::Std;

sub HELP_MESSAGE {
    say "HELP MESSAGE";
}

但它什么也不打印。出于好奇,我还试着添加了以下内容:

for (@ARGV) {
    HELP_MESSAGE() if /--help/;
}

它实际上是有效的,但看起来相当草率。我知道使用-h标志会相当简单,但我希望两者都有。

ccrfmcuu

ccrfmcuu1#

Getopt::Std的文档说明
如果-不是可识别的开关字母,则**getopts()**支持参数--help--version。如果定义了main::HELP_MESSAGE()和/或main::VERSION_MESSAGE(),则调用它们;...
所以试试这个:

#!/usr/bin/env perl

use strict;
use warnings;
use 5.014;
use Getopt::Std;

$Getopt::Std::STANDARD_HELP_VERSION = 1;
our $VERSION = 0.1;

getopts('');       # <<< You forgot this line, and `getopt()` DOES NOT work

sub HELP_MESSAGE {
    say "HELP MESSAGE";
}

试运行:

$ ./t00.pl --help
./t00.pl version 0.1 calling Getopt::Std::getopts (version 1.07),
running under Perl version 5.16.3.
HELP MESSAGE

相关问题