Perl在参数中找到奇数

时间:2018-11-08 09:11:52

标签: perl

示例:

./odd.pl a a b b b

输出:

b b b

找到一个奇数参数并打印

我尝试过:

my %count;
foreach $arg (@ARGV) {
    $count{$arg}++;
    if ($count{$arg} % 2 eq 1) { print "$arg"; }
}

print "\n";

1 个答案:

答案 0 :(得分:3)

您似乎要打印出现奇数次的值。

尝试的问题是您在完成获取不同值的计数之前先检查计数!

解决方案:

my %counts;
for my $arg (@ARGV) {
    ++$counts{$arg};
}

my @matches;
for my $arg (@ARGV) {
    if ($counts{$arg} % 2 == 1) {
        push @matches, $arg;
    }
}

print("@matches\n");

请注意,我将eq更改为==是因为eq用于字符串比较。

简化解决方案:

my %counts;
++$counts{$_} for @ARGV;
my @matches = grep { $counts{$_} % 2 } @ARGV;
print("@matches\n");