用 Perl 计算文本文件中每个单词的出现次数
Count the occurence of each word in a text file by Perl
我想使用 Perl 计算文本文件中每个单词的出现次数。这是脚本:
#! /usr/local/bin/perl -w
#Exercice 8
#Ouvrir le fichier
open my($file), '<', 'file.txt'
or die "Erreur lors de l'ouverture";
#Afficher le fichier
while( my $line = <$file> ) {
chomp($line) ;
print "$line \n";
}
#Calculer le nombre d'apparaition
while( my $line = <$file> ){
foreach $word (split(' ',$line)){
$freq{$word}++;
}
}
#Afficher les mots en ordre
foreach $word (sort keys %freq) {
print "$word $freq{$word}\n";
}
当我 运行 脚本时,我只得到第一个循环的结果。
其他两个没有return任何输出。
在您的第一个循环中,您通过 <>
运算符读取了文件的所有行,这意味着您实质上将文件指针推进到文件末尾。
在第二个循环中,您再次使用 <>
运算符,但无济于事 - 您在上一个循环中已经消耗了整个文件,因此没有其他内容可读。 %freq
因此在您的最终循环中未初始化。
我建议合并循环 1 和循环 2,如下所示:
while ( my $line = <$file> ) {
chomp($line);
print $line;
foreach $word (split(' ', $line)) {
$freq{$word}++;
}
}
我想使用 Perl 计算文本文件中每个单词的出现次数。这是脚本:
#! /usr/local/bin/perl -w
#Exercice 8
#Ouvrir le fichier
open my($file), '<', 'file.txt'
or die "Erreur lors de l'ouverture";
#Afficher le fichier
while( my $line = <$file> ) {
chomp($line) ;
print "$line \n";
}
#Calculer le nombre d'apparaition
while( my $line = <$file> ){
foreach $word (split(' ',$line)){
$freq{$word}++;
}
}
#Afficher les mots en ordre
foreach $word (sort keys %freq) {
print "$word $freq{$word}\n";
}
当我 运行 脚本时,我只得到第一个循环的结果。 其他两个没有return任何输出。
在您的第一个循环中,您通过 <>
运算符读取了文件的所有行,这意味着您实质上将文件指针推进到文件末尾。
在第二个循环中,您再次使用 <>
运算符,但无济于事 - 您在上一个循环中已经消耗了整个文件,因此没有其他内容可读。 %freq
因此在您的最终循环中未初始化。
我建议合并循环 1 和循环 2,如下所示:
while ( my $line = <$file> ) {
chomp($line);
print $line;
foreach $word (split(' ', $line)) {
$freq{$word}++;
}
}