Catalyst Maintainable web apps made easy! #138

Parse [key=value]

package DoQueue::Parser::Metadata;
sub parse {
    my ($class, $in) = @_;

    my %result;
    my @pairs  = split /,/, $in;
    foreach my $pair (@pairs) {
        if (my ($key, $value) = ($pair =~ /^ $NOT_EQUALS = $NOT_EQUALS $/xo)) {
            _trim($key, $value);
            $result{$key} ||= [];
            push @{$result{$key}}, $value;
        }
        else {
            croak "parse error; cannot parse '$pair' into a key/value";
        }
    }

    return \%result;
}

sub _trim {
    do { s/^\s+//; s/\s+$// } for @_;
}
Copyright © 2007 Jonathan Rockway