pl: hash in hash bzw. wie lege ich das am günstigsten an

Beitrag lesen

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