use List::Util qw(shuffle); my $alphabet = join '', shuffle 'a'..'z'; # do this only once and save it to a file for later reading my $t; @union = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { eval "(\$t = lc \$_) =~ tr/$alphabet/a-z/"; [ $t, $_ ] } @union;