getStuff configs --force=all --out out.txt -v -a #### use Getopt::Long; use Data::Dumper; { local @ARGV = ("configs", "--force=all", "--out", "out.txt", "-v", "-a"); GetOptions(\my %opts, "force=s", "out=s", "v", "a"); print Dumper \%opts; print Dumper \@ARGV; } #### $VAR1 = { 'out' => 'out.txt', 'a' => 1, 'v' => 1, 'force' => 'all' }; $VAR1 = [ 'configs' ]; #### GetOptions(\my %opts, "force=s", "out", "v", "a"); #### $VAR1 = { 'out' => 1, 'a' => 1, 'v' => 1, 'force' => 'all' }; $VAR1 = [ 'configs', 'out.txt' ];