use strict; print "Shifting all words into letter data files - "; open(DATA,"all.txt") || die "cannot open all.txt for input: $!"; while() { my $word = $_; chomp($word); $word=~s/^\s+//; my $letter = lc(substr($word,0,1)); if($letter!~/[a-z]/) { $letter = "___"; } if(-e "$letter.dat") { open(FILE,">>$letter.dat") || die "cannot $letter.dat for append: $!"; } else{ open(FILE,">$letter.dat") || die "cannot $letter.dat for output: $!"; } print FILE "$word\n"; close(FILE); } close(DATA); print "done\n"; print "Organizing letter file alphabetically - \n"; open(DATA,">all1.txt") || die "cannot do $!"; foreach my $filename (sort {lc($a) cmp lc($b)} <*.dat>) { print "\topening $filename - "; my @words = (); open(FILE,$filename) || die "cannot do $!"; while() { my $word = $_; chomp($word); push(@words,$word); } close(FILE); print "\t\tsorting - "; @words = sort {lc($a) cmp lc($b)} @words; print "done\n"; print "\t\tremoving duplicated - "; my $prev = "not equal to $words[0]"; @words = grep($_ ne $prev && ($prev = $_, 1), @words); print "done\n"; foreach my $word (@words) { print DATA "$word\n"; } print "\tdone\n"; } print "done\n";