use strict; use warnings; use Algorithm::Numerical::Shuffle qw(shuffle); my @array = (1..10,2..11,3..12); print " begin: @array\n"; my %seen; my @unique = grep {!$seen{$_}++} @array; print " unique: @unique\n"; my @shuffled = shuffle @unique; print "shuffled: @shuffled\n";