Your title and text say you want to parse URLs, but your examples look like command line options. If your examples represent what you are really trying to parse, it looks very much like a job for split() (or at the very worst Text::ParseWords) and Getopt::Long. Assuming the following is in file parse_url
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
use Data::Dumper;
use Getopt::Long qw{ GetOptionsFromArray };
my @arg = split /\s+/, $ARGV[0];
my %option;
GetOptionsFromArray(
\@arg,
\%option,
qw{ password=s server=s token=s username=s },
) or die;
print Dumper \%option;
# ex: set textwidth=72 :
running perl parse_url '--server api.blr-ocp1.lab.rbbn.com --username mgore --password abc1' produces
$VAR1 = {
'server' => 'api.blr-ocp1.lab.rbbn.com',
'password' => 'abc1',
'username' => 'mgore'
};
That is, the hash contains key/value pairs representing whatever options actually appear in the line.
The or die; branch will be taken if the line contains unknown options.
Non-option arguments will remain in @arg.
pre tags replaced by Code tags by Grandfather |