请多多包涵。
编写一个程序,读取一系列单词(每行一个单词)1直到输入结束,然后打印每个单词被看到的次数的摘要。(提示:记住,当一个未定义的值被当作一个数字来使用时,Perl 会自动将其转换为 0。回顾一下之前保持运行总计的练习可能会有所帮助。)如果输入单词是 fred,barney 、fred、dino、wilma、fred(都在单独的行上),输出应该告诉我们 fred 被看到了 3 次。为了获得额外的分数,请在输出中按 ASCII 顺序对摘要词进行排序。
[1] 它必须是每行一个单词,因为我们还没有向您展示如何从一行输入中提取单个单词。
这个应该使用哈希。我不知道怎么做。我只能想到使用一个数组并使用 2 个循环来比较重复项。我想我没有正确理解这个问题。这是我使用数组的代码。
#! usr/bin/perl
use warnings;
use strict;
chomp(my @input = <STDIN>);
foreach my $name (@input) {
my $count;
foreach my $compare_name (@input) {
if ($name eq $compare_name) {
$count += 1;
}
}
print "$name seen $count times\n";
}
但是这个印刷品例如说:
myname
myname
myname
it prints:
myname seen 3 times
myname seen 3 times
myname seen 3 times
有人可以指导我如何在这个上使用哈希吗?谢谢