#!/usr/local/bin/perl5.6.1 -w #!/usr/bin/perl -w # Count a vocabulary. # Usage: # wordcount file # prints a count of words used # wordcount -v file # prints a list of words used use strict; use vars qw ( %list $word @list $verbose %ct ); $verbose = 0; if (defined($ARGV[0])) { if ($ARGV[0] eq '-h') { die "$0 usage: wordcount [-v] file\n"; } if($ARGV[0] eq '-v') { shift; $verbose = 1; } } while(<>) { while(/([A-Za-z']+)/g) { $word = lc($1); $list{$word} ++; } } $ct{vocab} = 0+keys(%list); $ct{words} = 0; for $word (keys %list) { $ct{words} += $list{$word}; } printf("Vocabulary: %7d words\n", $ct{vocab}); printf("Length : %7d words\n", $ct{words}); if (!$verbose) { exit 0; } @list = sort { $a cmp $b } (keys %list); for $word (@list) { printf("%7d %s\n", $list{$word}, $word); } exit 0; __END__