in reply to Getopt::Long return value
Here's what's happening: by default, the permute option is set to true (unless your environment variable POSIXLY_CORRECT is set). That means that option values may be mixed with non-option values (like, say, filenames). With this (default) behavior, your -h 1 -c 2 is the same as saying -h -c 2 1. In other words, if you look at @ARGV, you'll see the extra '1' argument.
To turn this default behavior off, just do this:
Getopt::Long::Configure('nopermute');
|
|---|