我有这个 perl 脚本
#!/usr/bin/perl
use strict;
open my $df, '<', 'file.txt' or die "open: $!\n";
my %h;
while (<$df>) {
$h{$_}++ for split /\s+/;
END{
for (keys %h){
print $_, "=", $h{$_};
print "\n";
}
}
}
它打印文件中每个单词的出现次数,我有几个问题
1)如何通过让用户将一个参数作为文件名来使该脚本动态化
现在:
perl script.pl
通缉:
perl script.pl fileName
2)如何按降序对输出进行排序?
注意:我想根据出现的情况进行排序。
答案1
我会做什么:
#!/usr/bin/perl
use strict;
my %h;
while (<>) {
$h{$_}++ for split /\s+/;
END{
for (sort { $h{$b} <=> $h{$a} } keys %h){
print $_, "=", $h{$_};
print "\n";
}
}
}
所以 :
./script input_file