use Getopt::Long; GetOptions( 'user=s' => \$user, 'password=s' => \$pass, forms => sub { push( @actions, \&dump_forms ); }, links => sub { push( @actions, \&dump_links ); }, images => sub { push( @actions, \&dump_images ); }, all => sub { push( @actions, \&dump_forms, \&dump_links, \&dump_images ); }, absolute => \$absolute, 'agent=s' => \$agent, 'agent-alias=s' => \$agent_alias, help => sub { pod2usage(1); }, ) or pod2usage(2); #### use strict; use warnings; use Getopt::Long; my ($user, $pass, $absolute, $agent, $agent_alias, $forms ); my @actions; GetOptions( 'user=s' => \$user, 'password=s' => \$pass, forms => sub { push( @actions, \&dump_forms ); }, links => sub { push( @actions, \&dump_links ); }, images => sub { push( @actions, \&dump_images ); }, all => sub { push( @actions, \&dump_forms, \&dump_links, \&dump_images ); }, absolute => \$absolute, 'agent=s' => \$agent, 'agent-alias=s' => \$agent_alias, help => sub { pod2usage(1); }, ) or pod2usage(2); print "$user\n"; print "$pass\n"; $actions[dump_forms()]; sub dump_forms { my @vars = @_; print "@vars\n"; print "we're now in dump_forms\n";} #### $ ./mygetopt3.pl --user fred --password password --forms a Useless use of array element in void context at ./mygetopt3.pl line 35. fred password we're now in dump_forms