Olá! Sou iniciante em Perl e estou com um problema. Dado dois arquivos txt contendo os seguintes textos, por exemplo: ARQ1: ar ar ARQ2: ar ar ar ar bola Gostaria de contar a ocorrência de palavras de cada arquivo: ARQ1: ar = 2 ARQ2: ar = 4 bola = 1 Escrevi este código: #!/usr/bin/perl
my $dirname = $ARGV[0];
opendir(DIR, $dirname) or die "can't opendir $dirname: $!";
my %count_of;
while (defined($filename = readdir(DIR))) {
open (FILE, $dirname . $filename);
while (<FILE>) {
chomp;
$_ = lc $_; #lc = lowercase
$_ =~ s/\d+/ /g; # remove all numbers
$_ =~ s/[^a-zA-Z0-9'áéíóúàãõâêôçü]+/ /g;
foreach my $word ( split /\s+/, $_){
$count_of{$word}++;
}
}
#print "All words and their counts: \n";
foreach my $word (sort {$count_of{$b} <=> $count_of{$a} } keys %count_of)
{
print "$word : $count_of{$word}\n";
}
close (FILE);
}
closedir(DIR); Porém, ele me retorna: ar = 2 ar = 6 // aqui começa a leitura do segundo arquivo, o certo seria ar = 4. bola = 1 Acho que o problema está no vetor word, que até então não está sendo reinicializado quando se abre um novo arquivo... mas não consegui reinicializá-lo... alguma sugestão?