El código del programa es el siguiente:
use File::Slurp;
@ARGV || die "Uso: $0 <fichero para contar palabras>\n";
my $text = read_file( $ARGV[0] ) ;
my @palabras = split(" ",$text);
my %indice;
for(@palabras){
if($_ =~ /^([a-záéíóúñ])+$/){
$indice{$_}=$indice{$_}+1;
}
}
@ordenadas = sort {$indice{$b} cmp $indice{$a}} keys %indice;
for(0..49){
if($_<=$#ordenadas){
print $_+1,": ",$ordenadas[$_]," ... ",$indice{$ordenadas[$_]}," veces\n";
}
}
Primero dividimos el texto en palabras con la función split.
Luego recorremos el array con las palabras y si concuerdan con la expresión regular que define "una palabra en minúsculas" vamos incrementando el valor de un hash en el que tenemos como clave la palabra en sí y como valor el número de veces que se ha repetido.
A continuación ordenamos las palabras por repeticiones e imprimimos las 50 más frecuentes.
No hay comentarios:
Publicar un comentario