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 ) #### 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 ) #### #!/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__