Итак, у меня есть этот Perl Script, который является счетчиком частоты слов. Но теперь я должен изменить этот скрипт и сделать его чувствительным к регистру. Поэтому, если пользователь добавляет -i в командную строку, сценарий должен сравниваться с учетом регистра. Если -i не введен в командной строке, он должен сравниваться старым способом с учетом регистра.

Вот сценарий:

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

1 ответ1

0

Вы захотите use Getopt::Std чтобы помочь вам с анализом вашего параметра, и установите $case_insensitive в 1, если задано -i .

А потом

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

или, более кратко

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .