sub func { local @ARGV = @_; my( @foo, @bar ); GetOptions( 'foo=s' => \@foo, 'bar=s' => \@bar, ); print "foo = @foo\nbar = @bar\n"; } func( -foo => 1, -bar => 1, -foo => 2, -bar => 2 );