my @selection = @nums; for (0..7) { my $i = $_ + rand(@selection - $_); ($selection[$_], $selection[$i]) = ($selection[$i], $selection[$_]) } splice(@selection, 8); #### use List::Util qw( shuffle ); my @selection = (shuffle(@nums))[0..7];