print "$_\n" for transposition_list('thisisatest'); sub transposition_list { my $string = shift; my @transpositions; for my $i (0 .. length($string)-2) { (my $tmp = $string) =~ s/(.{$i})(.)(.)/$1$3$2/; push @transpositions, $tmp; } return @transpositions; }