#!/usr/local/bin/perl -s

# calcula o numero de ocorrencias de cada palavra num texto
# ignora as palavras que conte^m numeros no inicio (facil de mudar)
# imprime ordenado alfabeticamente (default) ou
# -n   ordenado por numero de ocorrencias 
# -w   imprime somente as palavras

use Fcntl;
require POSIX;
&POSIX::setlocale("LC_CTYPE","iso_8859_1");

$, = ' ';               # set output field separator
$\ = "\n";              # set output record separator
$/ = "";                # record separator:1 ou mais linhas em branco

while (<>) {
 for (/(\w+)/g) {$oco{$_}++  unless(/^[0-9]/);}
}

if($n){        # imprime por ordem de quantidade de ocorrencias
    open(SORT,'| sort -nr');
    for (keys %oco) {print SORT $oco{$_},$_}
    close SORT;} 
elsif($w){             # imprime so' as palavras ordenadamente
    for (sort keys %oco ) {print $_ ;}}
else{             # imprime ordenadamente
    for (sort keys %oco ) {print $_ ,$oco{$_};}}
