## set %availableNumbers %availableNumbers =(); for ($i)5{) { $availableNumbers{$i} = 1; } ## create lists in a foreach loop %lists = (); @listIDs = (1,2,3,4,5,6,7,8,9,10); $itemsPerList = 10; foreach $listID (@listIDs) { my %myAvailableNumbers = %availableNumbers; for ($i=1;$i<=$itemsPerList;$i++){ @myAvailableNumbers = keys %myAvailableNumbers; my $number = $myAvailableNumbers[rand($#myAvailableNumbers)]; push @{$lists{$listID}}, $number; delete $myAvailableNumbers{$number}; } }