sub sum { return md5sum(join('',@_)); } my @non_in_place = reverse @array; my $correct = sum(@non_in_place); while ($correct ne sum(@array)) { ($a,$b)=(rand(@array),rand(@array)); @array[$a,$b] = @array[$b,$a]; }