sub Getopts {
local($argumentative) = @_;
local(@args,$_,$first,$rest);
+ local($errs) = 0;
+ local($[) = 0;
@args = split( / */, $argumentative );
- while(($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
+ while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
($first,$rest) = ($1,$2);
$pos = index($argumentative,$first);
if($pos >= $[) {
if($args[$pos+1] eq ':') {
- shift;
+ shift(@ARGV);
if($rest eq '') {
- $rest = shift;
+ ++$errs unless @ARGV;
+ $rest = shift(@ARGV);
}
eval "\$opt_$first = \$rest;";
}
else {
eval "\$opt_$first = 1";
if($rest eq '') {
- shift;
+ shift(@ARGV);
}
else {
$ARGV[0] = "-$rest";
}
}
else {
- print stderr "Unknown option: $first\n";
+ print STDERR "Unknown option: $first\n";
+ ++$errs;
if($rest ne '') {
$ARGV[0] = "-$rest";
}
else {
- shift;
+ shift(@ARGV);
}
}
}
+ $errs == 0;
}
1;