gpt4 book ai didi

Perl grep 即使在列表上下文中也总是返回匹配数

转载 作者:行者123 更新时间:2023-12-01 05:37:51 34 4
gpt4 key购买 nike

我有一个包含列表的脚本

@names = ();
@x = ();

这两个列表都是用数据并行填充的,因此,最后我有两个列表,其中每个元素的名称和 x 值在同一索引处。请注意,有多个元素具有相同的 x 值。

我希望所有元素都具有特定的 x 值与代码

foreach my $x (0..4) {      
my @ind = grep { $x[$_] == $x } 0..$#names;
print @ind . "\n";
}

但是,输出是

17
17
8
4

这正是具有 x=0、x=1、...的元素的数量

我想知道,因为列表上下文中的 grep 应该返回一个包含匹配项的列表(这里是匹配元素的 indizes)。

我在这里做错了什么?

最好的问候。

最佳答案

你的问题是这一行:

print @ind . "\n";

当您使用连接运算符 . 时,您将两个参数放入标量上下文中,并且在标量上下文中,数组返回其大小,而不是其内容。

您想要的是使用逗号运算符:

print @ind , "\n";

或者更好的是,使用 say 功能:

say @ind;

如果您真正想要的是在一行中打印数字,用空格分隔:

say "@ind";

或者如果你想打印它们,用换行符分隔:

say for @ind;

在上述所有内容中,say 当然可以替换为 print,并在末尾添加一个换行符。

关于Perl grep 即使在列表上下文中也总是返回匹配数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629490/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com