試圖學習Perl。我有一個數組填充城市。我想通過引用子例程來傳遞數組,並打印每個城市輸出。不過,我有以下問題:Perl中的二維數組訪問
1)我可以訪問子例程中我的while循環之前的每個元素。但是我無法訪問我的while循環中的元素。我收到錯誤信息:
...
Use of uninitialized value in print at <filename> line 44, <GEN2> line 997 (#1)
Use of uninitialized value in print at <filename> line 44, <GEN2> line 998 (#1)
...
以下是代碼。我有評論打印什麼,什麼不(我試圖削減的是不需要對我的解釋代碼...):
@cities;
#Assume cities is loaded successfully
&loadCities(getFileHandle('cities.txt'), $NUM_CITIES, \@cities);
&printElements(getFileHandle('names.txt'), \@cities);
sub printElements{
my $counter = 0;
my $arraySize = scalar $_[1];
# Prints fine!!!
print @{$_[1][($counter)%$arraySize];
while ((my $line = $_[0]->getline()) && $counter < 1000){
#Doesn't print. Generates the above error
print @{$_[1][($counter)%$arraySize];
$counter += 1;
}
}
2)Perl的語法有我的超級困惑。我不明白@ {$ _ [1]} [0]是怎麼回事。試圖解決它。
- $ _ [1],治療在此位置作爲標量值(存儲器陣列的地址 )
- @ {...},解釋什麼被存儲在該存儲器 地址作爲值陣列
- @ {...} [X],在索引訪問元素x
我在正確的軌道上?
感謝您抽出寶貴時間回覆Matt – donsiuch