2014-09-04 36 views
0

我有數組引用的列表: my @a = ([1,2],[3,4]) 我怎樣才能稱爲數組「@b」在@a第一陣列((1,2))?我嘗試了各種解引用組合,但它們似乎都會引發錯誤。Perl的名單引用

+0

謝謝,@b = @ {$ a [0]};成功了!但我很困惑。爲什麼需要使用大括號來進行解引用?我見過的文檔說你應該能夠在數組引用之前直接放置一個'@',比如@myArr = @ $ myArrRef。我嘗試做像$ temp = $ a [0]; @b = @ $ temp或@b = @($ a [0]),但他們都沒有工作。爲什麼僅僅因爲我創建了一系列引用而需要大括號? – user553702 2014-09-06 07:56:05

回答

6

解除引用由@a陣列的第一元件,

my @b = @{ $a[0] }; 

注意到@b陣列是一個副本,以及可能的變化不會反映在@{$a[0]}

2

@a實際上包含兩個元素以上 - 兩個引用到子陣列。它可能看起來像4個元素,但事實並非如此。

所以,你可以這樣做:

my ($ref1, $ref2) = @a; 

然後解除引用$ref1

@b = @{ $ref1 }; 

但正如我敢肯定你會發現有 - 你不需要調用它$ref1因爲它的$a[0]。因此:

@b = @{$a[0]}; 

注 - 您需要的括號 - @$a[0]實際上是(@$a)[0]這是不是你想要的。 (因爲$a未定義)