我正在嘗試使用以下內容來遍歷陣列陣列:
foreach my $elem ( @{ $mastermap } )
{
say $elem;
say $elem[0];
say Dumper($elem);
}
(此時所有只是除錯輸出,而不是我真正想要對陣列資料執行的操作。)我得到的輸出(對每個回圈迭代重復)類似于:
ARRAY(0x55dabc740cc0)
Use of uninitialized value in say at test.pl line 39.
$VAR1 = [
'bob',
'*',
'1492',
'1492',
'machine acct',
'/var/bob',
'/bin/false'
];
所以$elem是一個陣列(也試過把它當成hash,錯了),Dumper可以輸出陣列的內容,但是$elem[0]是未定義的?請告訴我我對陣列有什么誤解(可能很多)。如果有幫助, $mastermap 是(我認為)一個陣列陣列,使用 Text::CSV 讀取如下:
my $mastermap = csv ({ in => $passwd, sep_char => ":", quote_char => "#" });
其中 $passwd 或多或少是 /etc/passwd 的副本。
uj5u.com熱心網友回復:
$elem[0]嘗試訪問陣列中的第一項@elem。您真正想要的是訪問陣列參考中的第一項$elem。這樣做的正確語法是:
$elem->[0]
或者
$$elem[0]
您應該始終在 Perl 腳本/程式的開頭添加use strict;和。use warnings;這樣做會產生以下警告:
Global symbol "@elem" requires explicit package name (did you forget to declare "my @elem"?) at...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521578.html
標籤:perl
下一篇:從包中匯出匿名函式
