Hi,
I am having some issues while creating a multidimensional hash. The issue is with split and not the hash itself.
Here is my code
use strict;
use warnings;
use Data::Dumper;
my %hash;
while (<DATA>) {
chomp;
my ($type, $restofstring) = /^type=(\w+) (.+)$/;
for $restofstring(split){
my ($key, $val) = split /=/, $restofstring;
$hash{$type}{$key} = $val;
}
}
print Dumper \%hash;
__DATA__
type=first a=1 b=2 c=3
type=second d=4 e=5 f=6
type=third g=7 h=8 i=9
The output is:
$VAR1 = {
'third' => {
'h' => '8',
'type' => 'third',
'i' => '9',
'g' => '7'
},
'first' => {
'type' => 'first',
'c' => '3',
'b' => '2',
'a' => '1'
},
'second' => {
'd' => '4',
'e' => '5',
'type' => 'second',
'f' => '6'
}
};
I was expecting the output to be like this.
$VAR1 = {
'third' => {
'h' => '8',
'i' => '9',
'g' => '7'
},
'first' => {
'c' => '3',
'b' => '2',
'a' => '1'
},
'second' => {
'd' => '4',
'e' => '5',
'f' => '6'
}
};
when I print $restofstring I only see "a=1 b=2 c=3", etc.
I am not sure why $key, $value include the $type variable when I think I am exclusively splitting only on variale $restofstring.
What am I doing wrong ?