2014-02-22 40 views
4

我希望腳本在使用--help命令行選項運行時打印幫助消息。基於該Getopt::Stddocumentation,這一分應該做的伎倆:如何使用Getopt :: Std來響應--help標誌?

#!/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標誌會很簡單,但我希望兩者都有。

回答

4

documentation of 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 
+0

似乎缺少'getopts的()'是問題。在我的原始腳本中(我在我的評論中發佈的是一個框架),我使用'getopt()'而不使用「s」。重新閱讀文檔後,差異被清除。 – Daniel