in reply to unique random numbers

Deleting a hash element returns its value, so if you define the %availableNumbers hash like this:

my ($lidno, $perbin, %lists) = (10, 10); my %availableNumbers = map { $_ => $_ } 1..$lidno*$perbin;
you get to choose and delete at the same time.

for my $lid (1..$lidno) { my %deck = %availableNumbers; $lists{$lidno} = [ map { delete %deck{ (keys %deck)[rand( keys %deck)]} } 1..$perbin ]; }

That could have been folded into another map, but enough is enough ;-)

After Compline,
Zaxo