我已經建立了包含數組的數組的哈希,讓我們叫它%hash_multidim,使得從數據輸出::自卸車看起來像這樣:如何訪問陣列數組的Perl哈希值?
'Key1' => [
[
'-3.81',
'-1.91',
'-1.86',
'-1.70'
],
[
'1.35',
'1.04',
'-1.01',
'-2.69'
]
],
'Key2' => [
[
'-1.63'
],
[
'-1.17'
]
],
現在,我想在訪問和執行操作在這個結構中最底層的水平。例如,對於'Key1',我想查找行1中的均值(又名[0]處數組的均值)。 使用列表::的Util QW(和),我編寫了一個子程序稱爲平均:
sub mean {
return sum(@_)/scalar(@_);
}
然而,如果使用子程序,如:
my $test = mean($hash_multidim{Key1}[0]);
print $test;
我沒有得到我的期望。事實上,我得到:
43678288
我哪裏出錯了?如果我試圖評估結果
$hash_multidim{Key1}[0]
一切都看起來很潔淨。例如,
@test2 = $hash_multidim{Key1}[0];
print Dumper(\@test2);
產生這樣的輸出:
$VAR1 = [
[
'-3.81',
'-1.91',
'-1.86',
'-1.70'
]
];
謝謝!我的直覺是這是一個取消引用的問題,但是當我試圖修復它時,我弄糟了語法。取消引用多維數據結構的一部分時,我傾向於恐慌。任何提示(除了經驗)或啓發式知道如何/何時取消引用?實際上,我確信我已經知道了什麼時候,但是如何(對於複雜的情況)經常讓我在閱讀完perldoc之後感到困惑。 – MCor
如果您的表達式以'$'開始,那麼您始終有一個標量(可能是對數組或散列的引用)。如果它以'@'或'%'開頭,那麼它是一個數組或散列。 – mob