nome do arquivo como argumento e classifique de forma decrescente em perl?

1

Eu tenho este script 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";
        }
     } 
}

imprime a ocorrência de cada palavra no arquivo, tenho várias perguntas

1) Como posso tornar este script dinâmico deixando o usuário colocar um argumento como um nome de arquivo

Agora:

perl script.pl

queria:

perl script.pl fileName

2) Como posso classificar a saída de maneira decrescente?

NOTA: Eu quero o tipo de acordo com a ocorrência.

    
por user78050 28.12.2014 / 12:42

1 resposta

1

O que eu faria:

#!/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";
        }
     }
}

então:

./script input_file
    
por 28.12.2014 / 14:07