使用Perl在数组中查找值

cha*_*dry 0 arrays perl

我有两个数组@input0@input1.我想要一个遍历每个值的for循环,@input1如果值存在@input0,则值保存在一个新数组中@input.

所有数组仅包含数字.每个数组元素最多有10个数字(见下文):

@input0 = {10061 10552 10553 10554 10555 10556 10557 10558 10559 10560, 10561 10562 10563 10564 10565 10566 10567 10573 10574 10575, ...}

@input1 = {20004 20182 ...}
Run Code Online (Sandbox Code Playgroud)

DVK*_*DVK 7

在Perl中实现这一点的最简洁和惯用的方法不是通过使用"for"循环而是mapgrep

my %seen0 = map { ($_ => 1) } @input0;
my @input = grep { $seen0{$_} } @input1;
Run Code Online (Sandbox Code Playgroud)

如果您特别想要一个for循环,请解释为什么map/grep方法不起作用(除非它是一个功课,在这种情况下,问题应该被标记为一个)