Como faço para uma palavra frequncy counter case sensitive usando a interface de linha de comando no Perl?

0

Então eu tenho este script Perl que é um contador de frequência de palavras. Mas agora tenho que modificar esse script e torná-lo sensível a maiúsculas e minúsculas. Portanto, se um usuário adicionar -i na linha de comando, o script deve ser comparado de maneira diferenciada de maiúsculas e minúsculas. Se o -i não for inserido na linha de comando, ele deve ser comparado à maneira antiga sensível a maiúsculas e minúsculas.

Aqui está o script:

#!/usr/bin/perl

#words hash
my %words;

while( my $a = <> )
{
    chomp $a;
    foreach my $word ( split ( /\s+/, $a ))
    {
        $words{$word}++;
    }
}

foreach $word (keys %words)
{
    print "<$word> appears $words{$word} times\n";
}
    
por Anuj Chokshi 09.11.2015 / 08:45

1 resposta

0

Você desejará use Getopt::Std para ajudá-lo com sua análise de opções e definir $case_insensitive para 1 se -i for dado.

E então

foreach my $word ( split ( /\s+/, $a ))
{
    if ($case_insensitive) 
    {
        $words{lc $word}++;
    }
    else
    {
        $words{$word}++;
    }
}

ou mais sucinto

foreach my $word ( split ( /\s+/, $a ))
{
    $words{$case_insensitive ? lc $word : $word}++;
}
    
por 09.11.2015 / 14:49