BTW a random hint. I like to do this:
\nGetOptions(\n "foo=s" => \\ my $foo,\n "bar=i" => \\ my $bar,\n);\n
if I'm not trying to initialize defaults.
If you want a command-line processor that can figure out required arguments, then I'd suggest Getopt::Declare or Getopt::Euclid. (The latter looks more interesting to me.) But note that since I work in a code-base that has established conventions around Getopt::Long, I have not bothered experimenting with those.
Cheers,
Ben