use Algorithm::Loops qw( NextPermute ); my $word = 'tool'; my @list = sort ' ', $word =~ /(.)/g; my $last_word = ''; while (NextPermute(@list)) { my $new_word = join('', @list); $new_word =~ s/ .*//; next if ($new_word eq $last_word); $last_word = $new_word; print($new_word, $/); }