我有一個現有的數組,我希望將其添加爲散列值。我知道你可以使用數組作爲值,但是看不到分配現有數組的方法。我基本上想去:如何使用現有數組作爲Perl中的哈希值?
$hash{fieldName} = @myArray;
只有這顯然不工作!幫助讚賞!
我有一個現有的數組,我希望將其添加爲散列值。我知道你可以使用數組作爲值,但是看不到分配現有數組的方法。我基本上想去:如何使用現有數組作爲Perl中的哈希值?
$hash{fieldName} = @myArray;
只有這顯然不工作!幫助讚賞!
只能在散列/數組中存儲標量值。您需要使用:
來存放它,並且:
my @myOtherArray = @{$hash{fieldName}};
把它找回來。它通過使用對數組的引用來解決標量需求。
您可以參考存儲使用反斜槓操作符「\」例如
$hash{fieldName} = \@myArray
然後,您可以使用以下方法來訪問數組:
@{$hash{fieldName}}
而且因爲沒有人提到這個問題,你的代碼沒有結果如下:
因爲你分配給哈希的元素時,任務是在標量上下文
,陣列的值成爲該陣列的尺寸
左右,$hash{fieldName}
值變得等於陣列(scalar @myarray
)
思南 - 感謝編輯! – 2009-10-03 18:03:38
雖然正確的答案確實是存儲參考,但有時候\@myArray
,[ @myArray ]
(淺拷貝)和dclone(深拷貝)之間的區別很重要。
如果有,$hash{fieldName} = \@myArray
,然後$hash{fieldName}->[2]
將修改@myArray
的第三個元素。如果@myArray
本身不包含任何引用,則存儲淺拷貝將幫助您避免該行爲。
Data Structures Cookbook在處理數據結構方面有很多很好的信息。有大量的創建,存儲和訪問數據的例子。 http://perldoc.perl.org/perldsc.html – daotoad 2009-10-04 06:20:29