2012-12-10 88 views
4

是否有將幫助功能添加到腳本的標準方式?最簡單的方法可能會採取一個參數,並打印一些文本,如果它是「幫助」或什麼的。有沒有人有任何關於如何做到這一點的例子?將幫助命令添加到腳本

謝謝!

回答

0

我這樣做的方式是利用Getopt::Std從命令行參數中找到-h標誌。

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

my %args; 
getopts('h', \%args); 

my $help = "help goes here. You can use 
more than one line to format the text"; 

die $help if $args{h}; 
# otherwise continue with script... 

一個更復雜的方法是使用POD::usage,雖然我沒有親自嘗試這種方式。

10

考慮Getopt::LongPod::Usage。我寫CLI工具通常的模式:

#!/usr/bin/env perl 
# ABSTRACT: Short tool description 
# PODNAME: toolname 
use autodie; 
use strict; 
use utf8; 
use warnings qw(all); 

use Getopt::Long; 
use Pod::Usage; 

# VERSION 

=head1 SYNOPSIS 

    toolname [options] files 

=head1 DESCRIPTION 

... 

=cut 

GetOptions(
    q(help)    => \my $help, 
    q(verbose)   => \my $verbose, 
) or pod2usage(q(-verbose) => 1); 
pod2usage(q(-verbose) => 1) if $help; 

# Actual code below 
2

看看https://github.com/qazwart/SVN-Watcher-Hook/blob/master/svn-watch.pl。我使用一種技術來組合Getopt::Long模塊和Pod::Usage模塊。

主要的動作中的行97至106和線108通過110

發生的Getopt::Long是使用,因爲它處理命令行參數可方便一種非常常見的模塊。使用Pod文檔更爲罕見。但是,所有CPAN模塊和內置模塊中的所有Perl均使用Pod文檔,因此如果您不知道,請致電learn it。 POD並不是很難學,它是內置於Perl中的,因此所有Perl程序都可以自行記錄。您可以使用perldoc命令打印任何程序的POD文檔。試試這個:

$ perldoc File::Find 

您還可以使用pod2htmlpod2text和其他類型的轉換命令打印POD文檔轉換成HTML等

之前,我知道POD,我會把這樣的事情在我的程序的頂部:

######################################################## 
# USAGE 
# 
my $USAGE =<<USAGE; 

    Usage: 

     foo [ -baz -fu <bar>] [-help] 

     where: 

      baz: yadda, yadda, yadda 
      fu: yadda, yadda, yadda 
      help: Prints out this helpful message 

USAGE 
# 
###################################################### 

然後,在我的計劃,我可以這樣做:

if ($help) { 
    print "$USAGE\n"; 
    exit 0; 
} 

這樣,有人可以查看代碼並閱讀使用文本。這也將與使用-help參數時打印出的文本相同。

3

易於使用:

if($ARGV[0] eq '-h' || $ARGV[0] eq '-help') 
{ 
help(); 
exit; 
} 


sub help { print "My help blah blah blah\n"; 
}