Getopt::Long doesn't work exactly like Getopt::Std, like
I showed, so use
GetOption(
'd=s' => $opt_d, # d
'h=s' => $opt_h, # h
'l=s' => $opt_l, # l
'L=s' => $opt_L, # L
'i=s' => $opt_i, # i
'o!' => $opt_o, # o:
'P!' => $opt_P, # P:
'p=s' => $opt_p, # p
'q=s' => $opt_q, # q
'r=s' => $opt_r, # r
'v!' => $opt_v, # v:
'c=s' => $opt_c, # c
)
or
GetOption( %h,#values in %h
'd=s', # d
'h=s', # h
'l=s', # l
'L=s', # L
'i=s', # i
'o!', # o:
'P!', # P:
'p=s', # p
'q=s', # q
'r=s', # r
'v!', # v:
'c=s', # c
)
generated with
#!/usr/bin/perl --
use strict;
use warnings;
Main( @ARGV );
exit( 0 );
sub Main {
StdToLong('dhlLio:P:pqrv:c');
}
BEGIN {
my %Flags = (
#~ ':' => '', # boolean, default
':' => '!', # boolean, explicit, negatable
'' => '=s',
);
sub StdToLong {
StdToLong1(@_);
StdToLong2(@_);
}
sub StdToLong1 {
print "GetOption(\n";
while( $_[0] =~ m/(\w)(\W)?/g ){
no warnings 'uninitialized';
print qq[ '$1$Flags{$2}' => \$opt_$1, # $1$2 \n];
}
print "\)\n";
}
sub StdToLong2 {
print "GetOption( \%h,#values in %h\n";
while( $_[0] =~ m/(\w)(\W)?/g ){
no warnings 'uninitialized';
print qq[ '$1$Flags{$2}', # $1$2 \n];
}
print "\)\n";
}
}
__END__