use strict; my @Server = qw(google google google web  gmx ); my @Pfad   = qw(start  start  test   mail sms ); my @Datei  = qw(index  start  login  test send); my @Packen = qw(ja     nein   ja     nein ja  ); my $l      = scalar @Server; die "unterschiedlich große Arrays" if $l != scalar @Server or                                       $l != scalar @Pfad   or                                       $l != scalar @Datei  or                                       $l != scalar @Packen  ; my %Hash = ( server => {} ); for my $index (0..$l-1) {     # äußeren Hash-Schlüssel anlegen, Wert ist leeres anonymes Hash:     $Hash{server}->{$Server[$index]} = {};    # Pfad als Schlüssel eintragen und leeres anonymes Array als Wert:     $Hash{server}->{$Server[$index]}->{folder} =         { $Pfad[$index] => { datei => { } } }; } # inneres Array füllen: for my $index (0..$l-1) {     $Hash{server}->         {$Server[$index]}->             {folder}->                 {$Pfad[$index]}->                     {datei}->                         {$Datei[$index]} = { logik => $Packen[$index] }; } use Data::Dumper; print Dumper \%Hash;