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