【发布时间】:2012-06-14 03:26:53
【问题描述】:
我有两个数组,@names 和 @employees,其中填充了代表名称的字符串。 @names 是二维的,持有对匿名数组的引用,但我们关心的数据的位置在 @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);
}
}
}
我遇到了这个错误:
在 script.pl 第 67 行第 2 行的字符串 eq 中使用未初始化的值。
字符串都在数组中定义。所以我猜这是因为我在循环遍历数组时删除了数组中的元素,但我认为向后循环遍历数组可以防止这样的问题发生。
那么我的循环哪里出错了?此外,我一直在为这个循环而苦苦挣扎,这向我暗示我的整个思维过程出了点问题。有没有更好的方法来做到这一点?
【问题讨论】: