perl的Getopt::Long和pod::usage

來源:互聯網
上載者:User

代碼:

需要顯式地定義變數且初始化。例如optionX。

如果沒有定義變數且顯式初始化,且沒有在命令列指定選項,則選項對應的變數將為未定義。

 

#!/bin/perl-5.8.3/bin/perl$
use warnings;$
use strict;$

use Data::Dumper;$
use Getopt::Long;$
use Pod::Usage;$

our $g_opts;
our $optionX=''; #if not defined in command line, it will be empty string
sub parse_opts{
    my $result = GetOptions(
                    "optionA=s" => \$g_opts->{'optionA'},#string
                    "optionB=s" => \$g_opts->{'optionB'},#string
                    "optionC=i" => \$g_opts->{'optionC'},#integer
                    "optionD=f" => \$g_opts->{'optionD'},#float
                    "optionX=f" => \$optionX,
                    "optionY=f" => \$optionY,
                    "verbose"   => \$g_opts->{'verbose'},#flag
                    "quiet"     => sub { $g_opts->{'verbose'} = 0 },
                    "help|?"    => \$g_opts->{'help'}
                  );
    if(!($g_opts->{'optionA'})){
        &pod2usage( -verbose => 1);#exit status will be 1
    }
    if($g_opts->{'help'}){
        &pod2usage( -verbose => 1);#exit status will be 1
    }
}

&parse_opts();
print("\n$optionX\n");
print($optionY); #if not defined in command line, it will be undefined
print($g_opts->{"optionB"});

foreach my $key (keys %{$g_opts}){$
  if(!$g_opts->{$key}) {next;} $
  print($key . "=" . $g_opts->{$key} . "\n");$
  }$
$
exit(0);$
$

$
__END__$
$
=head1 NAME$
$
sample - Using Getopt::Long and Pod::Usage$
$
=head1 SYNOPSIS$
$
sample [options] [args ...]$
$
Options: $
$
   -optionA         optionA $
   -optionB         optionB$
   -optionC         optionC $
   -optionD         optionD $
   -verbose         verbose $
   -quiet           noverbose $
   -help            brief help message$
$
=head1 OPTIONS$
$
=over 8$
$
=item B<-help>$
$
Print a brief help message and exits.$
$
=back$
$
=head1 DESCRIPTION$
$
B<This program> will read the given input file(s) and do something$
useful with the contents thereof.$
$
=cut$

 

完! 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.