my $extract; my $file; { local @ARGV; foreach my $key ( param ) { if ( param($key) ) { foreach my $value ( param($key) ) { push @ARGV, $key, $value; } } else { # arg-less booleans push @ARGV, $key; } } GetOptions( 'file=s' => \$file, 'extract!' => \$extract, ); }