Perl: Quick extract variables from @ARGV

I'm a big fan of Getopt::Long, but sometimes I do not want to include a large module to extract two arguments. I wrote a quick function that will parse simple command line arguments and give you a hash of their values.

sub argv {
    my $ret = {};

    for (my $i = 0; $i < scalar(@ARGV); $i++) {
        # If the item starts with "-" it's a key
        if ((my ($key) = $ARGV[$i] =~ /^--?([a-zA-Z_]\w*)/) && ($ARGV[$i] !~ /^-\w\w/)) {
            # If the next item does not start with "--" it's the value for this item
            if (defined($ARGV[$i + 1]) && ($ARGV[$i + 1] !~ /^--?\D/)) {
                $ret->{$key} = $ARGV[$i + 1];
            # Bareword like --verbose with no options
            } else {
                $ret->{$key}++;
            }
        }
    }

    # We're looking for a certain item
    if ($_[0]) { return $ret->{$_[0]}; }

    return $ret;
}


Note: Replies will be formatted with PHP Markdown Extra syntax.

Name: Email (Not Required):
 
Logged IP: 54.163.61.66
To prevent spam please submit by clicking the kitten: