#!/usr/bin/perl -w # Brute force calculate all possible anagrams foreach $arg (@ARGV) { @letters = split(//, $arg); anagram('', @letters); } sub anagram { my $prefix = shift; my @l = @_; for( my $len = @l; $len > 0; --$len ) { if( @l > 1 ) { anagram($prefix.$l[0], @l[1..$#l]); push(@l, shift(@l)); } else { print $prefix, @l, "\n"; } } }