use strict; use Data::Dumper; my %data = ( l1 => ['x1', 'x2', 'x3'], l2 => ['y1', 'y2', 'y3', 'y4'], l3 => ['z1', 'z2', 'z3', 'z4', 'z5'], ); my $anz_listen = 3; my @liste = (); for (my $i=0; $i<$anz_listen; $i++) { print "Schleifendurchlauf '$i' ...\n"; if ($i==0) { @liste = @{$data{'l'.($i+1)}} } else { my $laenge_akt = @{$data{'l'.($i+1)}}; my @list_bak = @liste; @liste = (); for (my $j=0;$j<$laenge_akt;$j++) { push @liste, map{$_.'-'.$data{'l'.($i+1)}[$j]}(@list_bak); } # for } # else print Dumper(\@liste)."\n"; } # for