我正在努力制作一个 perl 脚本,请注意我对此很陌生..
这是我试图实现的目标:制作一个脚本,该脚本需要一个 .txt 文件并计算文件中的每个单词。并且当它被计数时,如果文件中的前 10 个单词显示每个单词我计数了多少次,那么这些单词会列出一个列表。
好吧,这就是我到目前为止所得到的,我能够让脚本计算单词以及它们出现的次数。现在我需要进入前十名,我真的不知道在哪里以及如何去做。这是一个家庭作业,所以我不希望/期望你为我解决它,只是给我一些关于从哪里开始的指示。
感谢您的帮助(提前)
10 月 15 日更新
好吧,一切都很好,但是..
就像现在一样,它只是在一行中打印所有内容。我需要它这样打印:
4 word
3 next word
2 next word
嗯,你明白了。。
我想我明白了……我想:P
...................................................
#! /usr/bin/perl
use utf8;
print ("Vilken fil?\n");
my $filen = @ARGV ? shift(@ARGV) : <STDIN>;
chomp $filen;
my %freq;
open my $DATA, $filen or die "Hittade inte den filen!";
while(<$DATA>) {
s/[;:()".,!?]/ /gio;
foreach $word(split(' ', lc $_)) {
$freq{$word}++;
}
}
@listing = (sort { $freq{$b} <=> $freq{$a} } keys %freq)[0..9];
foreach my $word (@listing )
{ print $freq{$word}." $word\n"; };