我是一個完全的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,獲取用作sql查詢一部分的mac地址。這就是問題所在。儘管我的工作已經完成,但我對於自己的工作卻一無所知,但我無法回到這一點。無知絕對不是幸福。
當我通過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
我相信這個問題是我的數組的數組是不是一個數組的數組。如果是的話,它會像編碼一樣工作,或者我從閱讀中想到......這就是說,我無法理解我正在處理的事情。這將是一個頭巴掌我很確定,但我很難過....請幫忙嗎?
TIA Ø
如果你不知道你已經結束了什麼數據結構了 - 如果你不習慣Perl的數據結構,這是不尋常! - 優秀的Data :: Dumper模塊可以用來可視化你最終的結果。只是'使用數據::自卸車;'和'打印自卸車(\ @my_array);'' –
我是一個總的Perl的福利局,但仍然無法相信我能不明白這out' - 我用的Perl多年,但是這種情況在我看來還是比我想承認的要多得多 – djf
看看[Perl教程](http://perldoc.perl.org/index-tutorials.html)。有一個名爲[Mark關於參考文獻的非常簡短的教程](http://perldoc.perl.org/perlreftut.html),它將真正地解釋參考文獻如何工作。唯一的問題是,一旦你讀了它,你對參考文獻的理解就會變得非常清楚,你將會使用最複雜而難以維護的參考文獻。解決方案是閱讀非常優秀的[面向對象教程](http://perldoc.perl.org/perlobj.html)。有趣的是隻需點擊一下! –