perl的Getopt::Long和pod::usage


代码:

需要显式地定义变量且初始化。例如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$


 

完! 

你可能感兴趣的:(perl的Getopt::Long和pod::usage)