Wenn Du einen Hash haben willst, braucht Du je Record (Zeile in CSV) eine eindeutige Kennung. Da wäre mein Code nur geringfügig zu ändern: Statt auf das Array zu pushen wird halt dem Schlüsssel (eindeutige Kennung) die Hashreferenz zugewiesen.
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
use strict;
use warnings;
#my @res = ();
my %res = (); # Hash of Hashes
my @fields = qw(ID Format Address Reserve1 Reserve2);
while( my $lin = <DATA> ){
chomp $lin;
my %hunt = ();
@hunt{ @fields } = split /;/, $lin;
#push @res, \%hunt;
$res{ $hunt{ID} } = \%hunt;
}
print Dumper \%res;
__DATA__
234;dezimal;192.168.1.2;Res1;Res2
99;dezimal;192.168.1.3;Res3;Res4
Ausgabe
$VAR1 = {
'234' => {
'Address' => '192.168.1.2',
'Format' => 'dezimal',
'ID' => '234',
'Reserve1' => 'Res1',
'Reserve2' => 'Res2'
},
'99' => {
'Address' => '192.168.1.3',
'Format' => 'dezimal',
'ID' => '99',
'Reserve1' => 'Res3',
'Reserve2' => 'Res4'
}
};
MfG