我有兩個數組,@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