Another way:
use Data::Dumper;
use strict;
use warnings;
my $params = "option1 = value0 value1 value2 option3 =value3 value4 op
+tion2=value5";
$params =~ s/\s*=\s*/=/g;
my @params = split /\s+/, $params;
my %params;
my $cur_val;
for my $param (@params) {
my @pairs = split /=/, $param;
$cur_val = $pairs[0] if ($#pairs) ;
push @{$params{$cur_val}}, $pairs[-1];
}
print Dumper(\%params);
Which gives:
$VAR1 = {
'option1' => [
'value0',
'value1',
'value2'
],
'option3' => [
'value3',
'value4'
],
'option2' => [
'value5'
]
};