miércoles, 30 de abril de 2008

EJERCICIO 4: Cuenta-palabras

Programa en PERL que cuenta las palabras en minúscula que contiene un fichero de texto y muestra una lista con las 50 palabras que más aparecen:

#Programa PERL que cuenta las palabras en minúscula de un fichero y muestra las 50 más frecuentes

my $fichero_a_procesar = shift
|| die "Uso: $0 <nombre de fichero>n";
open my $fh, "<", $fichero_a_procesar || die "No puedo abrir el fichero. Error $!\n";

my %indice; #El % indica que tenemos una variable asociativa
while(<$fh>) {
@linea = split; #troceamos la línea por palabras, para que se analicen todas las palabras de la línea
for(@linea){
if (/(^[a-záéíóúñ]+)/ ) { #indicamos la expresión regular buscada: letra minúscula seguida de una o más letras
$indice{$1}++; #incrementamos el número de apariciones de la palabra en minúscula
}
}
}

#Ordenar las palabras en orden descendente del número de apariciones
@orden = sort {$indice{$b} <=> $indice{$a}} keys %indice;

#Mostrar sólo los 50 primeros
for(@orden[0..49]){
print "* $_ -> \t $indice{$_}\n";
}

No hay comentarios: