编写一个 Perl 程序,读取每行包含一个单词的文本文件。创建一个哈希,其中包含读取为键的单词以及它们被读取为值的次数。打印出每个单词及其频率。
print $ARGV[0]."\n";
open (FILE,$ARGV[0]);
while ($line = <FILE>)
{
chomp($line);
if (exists($count{$line}))
{
$count{$line}++;
}
else
{
$count{$line} = 1;
}
}
while ( ($word,$occurrences) = each(%count))
{
print $word." ".$occurrences."\n";
}
不应该是
open INFILE
代替吗FILE
?$count{$line}
$count
:这里的作用是什么?你就不能写吗$line++
?你能解释一下这句话吗?
while ( ($word,$occurrences) = each(%count))
答案1
- 文件句柄的名称没有任何特殊含义。除非使用
STDOUT
,STDIN
或STDERR
作为文件句柄名称。FILE
与 的工作方式相同INFILE
,尽管有些人可能更喜欢INFILE
可读性。请参阅下面 Mat 的提示,了解有关文件句柄问题的宝贵见解。 %count
是将用于存储每个单词出现次数的哈希值。- Perldoc 页面
each
这里。基本上,这一行迭代哈希的键值对,并将键分配给变量$word
,并将哈希中的键值分配给变量$occurrences
。