示例:
./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";
答案 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");