如何使用 Perl 中的命令行界面使词频计数器区分大小写?

如何使用 Perl 中的命令行界面使词频计数器区分大小写?

所以我有这个 Perl 脚本,它是一个词频计数器。但现在我必须修改这个脚本,使它区分大小写。因此,如果用户在命令行中添加 -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

你会想要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}++;
}

相关内容