我是相當新的Perl,所以請原諒我,如果這看起來像一個簡單的問題...Perl如何從數組散列中檢索數組?
無論如何,我有一個數組散列,我試圖檢索哈希中的數組之一,但我能得到的只是數組的標量大小。
%HoA = a hash of arrays
$key = some key in the hash
foreach $nextItem (@HoA{$key}) {
do a bunch of stuff with $nextItem
}
當我這樣做時,$ nextItem總是隻是數組的大小,循環只能運行一次。我試着打印以下:
@HoA{$key}
$HoA{$key}
@$HoA{$key}
前兩個給我標量的大小和第三給我什麼......我缺少什麼嗎?
更新:我想知道如果我的問題實際上是我將數組添加到哈希的方式。下面是我在做什麼:
@HoA{$key} = split(/ /, $list);
這是否堅持在哈希數組,或者散列數組的大小?
更新2:我嘗試下面的代碼塊:
my $key = "TEST";
my %HoA =();
my @testarray = (1, 2, 3);
@HoA{$key} = @testarray;
print Dumper(%HoA);
這裏的輸出:
$VAR1 = 'TEST';
$VAR2 = 1;
爲什麼僅粘附陣列的所述第一值中?
我想:當你從取消引用哈希檢索
然後。它只是返回一個大小爲零的循環,甚至不會執行一次。 – mrplainswalker
@mrplainswalker - 嘗試打印出散列的內容並確保它具有您認爲它具有的結構。也許你的關鍵是未定義或不像你想象的數組。你可以使用Data :: Dumper;自卸車(%HoA)檢查出來。你也可以做if(定義($ HoA {$ key})){print「Defined」}作爲一個快速測試 – scrappedcola
好吧,我嘗試了Dumper函數來查看哈希中的內容,並且你是對的。 ..這不是我所期望的。每個值只是數組中的第一項,而不是整個數組。 – mrplainswalker