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 $l      = scalar @Server; die "unterschiedlich große Arrays" if $l != scalar @Server or                                       $l != scalar @Pfad   or                                       $l != scalar @Datei  ; my %Hash = (); for my $index (0..$l-1) {     # äußeren Hash-Schlüssel anlegen, Wert ist leeres anonymes Hash:     $Hash{$Server[$index]} = {};     # Pfad als Schlüssel eintragen und leeres anonymes Array als Wert:     $Hash{$Server[$index]}->{$Pfad[$index]} = []; } # inneres Array füllen: for my $index (0..$l-1) {     push @{ $Hash{$Server[$index]}->{$Pfad[$index]} }, $Datei[$index]; } use Data::Dumper; print Dumper \%Hash;