文件名作为参数并在perl中按降序排序?

文件名作为参数并在perl中按降序排序?

我有这个 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

相关内容