3 回答

TA貢獻2041條經驗 獲得超4個贊
Perl中沒有所謂的二維數組,Perl中的二維數組實際上是引用,用@開頭是不對的,
$array2=[ ["good","just so so","bad"],
["good","just so ","bad"],
]
建立了一個引用,
但是問題是,樓主在引用這個數據的時候,想使用列表上下文(?),把引用改成列表的時候,應該是@$array2,對吧。
但你在循環里使用了@array2,它原本沒有定義,你一使用就定義了,定義了之后,你又調用$array2[2][1],這個調用實際上調用了@array2數組,而不是引用,引用的引用名和第一個[2]之間要有->,不然調用的是數組,因為你調用了數組,所以[2][1]就是沒有定義的了。
這個具體的建議你看一下Perl關于引用的詳細內容,還有引用用在復雜數據結構上時應該注意的。

TA貢獻1793條經驗 獲得超6個贊
perl用push根本不需要什么modul
二維數組,不能那么寫。而且只有兩行,哪來的[2]}[1]?
@array2=( [1, 2, 3, 4],
[5, 6, 7, 8],
[9, 0, 1, 2] );
print ${$array2[2]}[1]."\n\n";

TA貢獻1821條經驗 獲得超6個贊
用的是引用,初始化沒錯,不過[2] 的確不存在,
push 是perl的內建函數 ,不用module,
應該是 push @array2,@array1;
push 第二個參數可以直接是數組,不應該是引用。
添加回答
舉報