1

好的,这有点奇怪,它似乎不应该以这种方式工作。我有一个嵌套在另一个中的 foreach,我需要它来仅获取与外部循环相对应的值。

foreach my $var (@$list)
{
    foreach my $var2 (@$list2)
    {
        if($var2->[0] ne $var->[0])
        {
            print qq(They are equal);
        } else
        {
            next;
        }
    }
}

这似乎不起作用。对于嵌套循环的范围,我应该知道一条规则吗?测试表明,一旦进入内部循环, $var 就会停止存在,直到内部循环退出。

4

3 回答 3

3

它似乎不起作用,因为您正在测试两个字符串是否不相等,然后打印它们是否相等。

你也应该这样做print qq(They are equal\n);

顺便说一句,范围界定没有问题。您的字符串匹配或不匹配 - 取决于您期望的结果。

于 2011-03-01T19:27:57.100 回答
2

我不认为范围界定是你的问题。您使用了 ne,然后打印了“它们是平等的”。如果您希望它们相等,则应使用eq。见下文:

foreach my $var (@$list){
    foreach my $var2 (@$list2){
        if($var2->[0] eq $var->[0]) {
            print qq(They are equal);
        } else {
            next;
        }
    }
}
于 2011-03-01T19:27:05.457 回答
0

我认为这是范围问题,因为我在代码中遇到了问题。当我在外部 foreach 中打印变量时,它打印正确,但是当我尝试在内部 foreach 中打印外部 foreach 变量时,它只打印外部变量的初始化值。

于 2013-05-30T06:25:42.323 回答