我是一个完全的 Perl 新手,但仍然无法相信我无法通过我在网上阅读的所有信息来弄清楚这一点,但是,我已经花费了太多时间并且此时正遭受阻塞。希望根据我的现实生活例子学到一些东西......
好的,我想我有一个数组数组,创建如下:
my @array1 = ();
my @array2 = ();
my $ctr1 = 0;
my $col;
[sql query]
while(($col)=$sth->fetchrow_array() ) {
$array1[$ctr1]=$col;
$ctr1++;
}
print STDERR "@array1";
##results in 10 rows, a mac address in each
##00:00:00:00:00:00 00:11:11:11:11:11 22:22:22:22:22:22 33:33:33:33:33:33 ...
现在我做另一个查询。在遍历结果时,我正在寻找那 10 个 mac 地址。当我找到一个时,我在 array2 中添加一行,其中包含 mac 和累积到该点的序号,如下所示:
[sql query]
while(($col)=$sth->fetchrow_array() ) {
$ctr2++;
if( my ($matched) = grep $_ eq $col, @array1 ) {
push( @array2, ($col,$ctr2) );
}
}
print STDERR "@array2";
##results in 10 rows, a mac address and an integer in each
##00:00:00:00:00:00 2 00:11:11:11:11:11 24 22:22:22:22:22:22 69 33:33:33:33:33:33 82 ...
现在是简单的部分。我想遍历array2,获取mac地址以用作sql查询的一部分。问题就在于此。我对自己在做什么一无所知,即使我几乎可以正常工作,但我无法回到那个时候。无知绝对不是幸福。
当我循环遍历 array2 时,我收到了许多错误,基于语句的不同形式。下面列出了我认为正确的一个以及错误消息...
my $ctr3 = 0;
foreach $ctr3 (@array2) {
my $chkmac = $array2[$ctr3][0]; <--- gacks here with the error below - line 607
[SQL query]
[Thu May 30 14:05:09 2013] [error] Can't use string ("00:66:55:77:99:88") as an ARRAY ref while "strict refs" in use at /path/to/test.cgi line 607.\n
我认为问题在于我的数组数组不是数组数组。如果是这样,它会像编码一样工作,或者我认为从阅读中......也就是说,我无法理解我在处理什么。我几乎可以肯定,这将是一个令人头疼的问题,但我被难住了.... 一点帮助,好吗?
蒂奥