我有两个数组,@names
和@employees
,这些数组填充了表示名称的字符串。 @names
是2维的,它引用了匿名数组,但我们关心的数据的位置是@names[i][0]
。我想循环通过@names
并找到哪些名字不在@employees
。比较两个数组,删除匹配的项目
起初我以为通过向后循环@names
,将它与@employees
相比较并删除@names
的任何匹配都可以,但我遇到了一些错误。下面是我有:
for my $i (reverse(0 .. $#names)) {
foreach my $employee (@employees) {
if ($names[$i][0] eq $employee) { # line 67
splice(@names, $i, 1);
}
}
}
我碰到这个错误:
Use of uninitialized value in string eq at script.pl line 67, line 2.
中的字符串数组中的所有规定。所以我猜测这是由于我在循环中删除数组中的元素造成的,但我认为通过向后循环数组可以防止发生这样的问题。
那么我在哪里我的循环错了?另外,我一直在为这个循环而努力,并暗示我的整个思维过程都有问题。有没有更好的方法来做到这一点?
可能重复的[如何查找在一个数组中但不是另一个在Perl中的元素?](http://stackoverflow.com/questions/6714667/how-can-i-find-elements-这是一个数组,但不是另一个perl) – Flimzy