Given a string that looks like this:

my $str = 'fname=Foo&lname=Bar&email=foo@bar.com';

Create a hash where the keys are fname, lname, email or if the string looks like this

my $str = 'title=Stargates&year=2005&chapter=03&bitrate=128';

then create a hash where the keys are title, year, chapter, bitrate Use a single statement (with split) to achieve this.

examples/regex/split_http_previous.pl
#!/usr/bin/perl
use strict;
use warnings;

use Data::Dumper;

my @input = (
    'fname=Foo&lname=Bar&email=foo@bar.com',
    'ip=127.0.0.1&machine=foobar',
);

foreach my $str (@input) {
    process($str);
}

sub process {
    my $str = shift;

    my @pairs = split /&/, $str;
    my %data;
    foreach my $p (@pairs) {
        my ($k, $v) = split /=/, $p;
        $data{$k} = $v;
    }
    print Dumper \%data;
}

examples/regex/split_http.out
$VAR1 = {
          'email' => 'foo@bar.com',
          'lname' => 'Bar',
          'fname' => 'Foo'
        };
$VAR1 = {
          'ip' => '127.0.0.1',
          'machine' => 'foobar'
        };