#!/usr/bin/perl use warnings; use strict; my $file = shift; open(FH, "< $file") or die $!; my %fh; foreach my $let('a'..'z'){ open( $fh{$let}," >> letters/$let"); } while(){ my $count = 0; my $word = $_; chomp $word; $word = lc $word; $word =~ s/[[:^print:]\s+]+//g; #only printable characters #skip words with apostrophe, dashes, spaces, or a .w ending my $word1 = $word; $count = $word1 =~ tr/\'-_ &,.0-9//; if($count > 0){next} my $let = substr($word, 0, 1); if (!defined $fh{$let}){print $word;next} else{ print { $fh{$let} } "$word\n";} } __END__