use 5.010; # fuer //=, kann man aber auch vermeiden wenn man will my @a = qw(a b c d e); my %h; for (0..($#a-1)) { push @{$h{$a[$_]}}, $a[$_+1]; } $h{$a[-1]} //= [];