我是Perl的新手,我试图迭代一个数组的两个元素,每个元素中有多个索引并寻找匹配。如果element2与element1匹配,我想打印两者并移动到element1中的下一个位置并继续循环寻找下一个匹配。如果我没有匹配,请循环直到我得到一个匹配。这就是我所拥有的:
@array = split(',',$row);
foreach $element1(@array[1])
{
foreach $element2(@array[2])
{
if($element1 == $element2)
{
print "1 = $element1 : 2 = $element2 \n";
}
}
}
我没有得到匹配的输出。我尝试过多次迭代,不同的语法变化。 当我这样做时,我可以得到两个元素:
foreach $element1(@array[1])
{
foreach $element2(@array[2])
{
print "1 = $element1 : 2 = $element2 \n";
}
}
我以为我可能没有正确解除引用。任何指导或建议将不胜感激。感谢。
答案 0 :(得分:1)
您的脚本存在许多问题。简言之:
initial catalog=myDB;UserId='MyUser';Password='abc;123';multipleactiveresultsets=True;
,而不是$array[0]
。对于新的Perl程序员来说,这是一种常见的挫败感。要记住的是,sigil(变量名前面的符号)表示左侧传递的值的类型(例如@array[0]
,$scalar
或@array
)表达式,而不是右侧访问的数据结构类型。%hash
而不是eq
执行的。==
是对数组的引用,则$foo
会为您提供原始数组。最重要的是,@$foo
在你用逗号分割另一个字符串(行)后会是一个字符串数组,所以你不清楚为什么你希望能够在第一个字符串中处理字符串和第二个位置作为您可以循环的数组。我猜测你实际上要做什么,以及你的输入和预期输出实际上是什么样的,但我会等你提供一些额外的信息,并将上述信息作为一般指导与此同时,还有下面代码的轻微修改版本。
@array