-# Consider refactoring this to use Getopt::Long once Getopt::Long's planned
-# feature is implemented, to distinguish + and - options.
-while (@ARGV) {
- $opts{notify} = 1 if $ARGV[0] eq '-n';
- $opts{strip} = 1 if $ARGV[0] eq '-s';
- $versiononly = 1 if $ARGV[0] eq '-v';
- $versiononly = 0 if $ARGV[0] eq '+v';
- $opts{silent} = 1 if $ARGV[0] eq '-S';
- $opts{'skip-otherperls'} = 1 if $ARGV[0] eq '-o';
- $opts{force} = 1 if $ARGV[0] eq '-f';
- $opts{verbose} = 1 if $ARGV[0] eq '-V' || $ARGV [0] eq '-n';
- $opts{archname} = 1 if $ARGV[0] eq '-A';
- $opts{netware} = 1 if $ARGV[0] eq '-netware';
- $opts{nopods} = 1 if $ARGV[0] eq '-p';
- $opts{destdir} = $1 if $ARGV[0] =~ /^-?-destdir=(.*)$/;
- if ($ARGV[0] eq '-?' or $ARGV[0] =~ /^-?-h/) {
- print <<"EOT";
+{
+ my $usage = 0;
+ if (!GetOptions(\%opts, 'notify|n', 'strip|s', 'silent|S',
+ 'skip-otherperls|o', 'force|f', 'verbose|V', 'archname|A',
+ 'netware', 'nopods|p', 'destdir:s', 'help|h|?',
+ 'versiononly|v' => \$versiononly, '<>' => sub {
+ if ($_[0] eq '+v') {
+ $versiononly = 0;
+ } else {
+ # Any other unknown argument is going to be an error
+ $usage = 1;
+ }
+ },
+ )) {
+ $usage = 1;
+ }
+ $opts{verbose} ||= $opts{notify};
+
+ if ($usage || $opts{help}) {
+ print <<"EOT";