我會試着用一個例子來說明這一點。以散列的散列的一個常見的例子:如何在腳本執行期間創建匿名哈希並將哈希添加到已知哈希中?
my %HoH = (
flintstones => {
lead => "fred",
pal => "barney",
},
jetsons => {
lead => "george",
wife => "jane",
"his boy" => "elroy",
},
simpsons => {
lead => "homer",
wife => "marge",
kid => "bart",
},
);
對於我而言,我希望能夠一個無名,或匿名散列添加到%斛。我不需要(或能夠)在運行時定義這些子哈希。我怎樣才能用Perl來完成這個任務?
一切我讀過(我已經通過perldocs文檔和Google'd已讀)似乎表明,所有子hahes(如「摩登原始人」,「摩登家庭」和「辛普森一家」)中定義的例子。
什麼我做的是試圖建立一個父哈希將包含從CSV文件子哈希有行:
%TopHash = (
%Line1 => {
cell01 => $some_value1a;
cell02 => $some_value2a;
cell03 => $some_value3a;
},
%Line2 => {
cell01 => $some_value1b;
cell02 => $some_value2b;
cell03 => $some_value3b;
},
%Line3 => {
cell01 => $some_value1c;
cell02 => $some_value2c;
cell03 => $some_value3c;
},
# etc
# etc
# etc
);
「%LINEX」的數量散列,我需要的不是已知直到運行時間(因爲它們表示在運行時讀取的CSV中的行數)。
任何想法?如果它不是已經清楚......我仍然試圖圍繞Perl哈希包裹我的頭。
順便說一句,你確定要爲這個結構使用HoH嗎?由於你解析CSV文件,這聽起來像是一個數組散列可能更合適。一般來說,如果你發現自己在一個散列鍵或變量名的末尾粘貼了連續的數字,你應該使用一個數組。 – friedo 2009-10-29 17:01:26
我的最終目標是獲得具有唯一數據的行列表(由連續3個單元格的組合確定);但是,我需要唯一行的所有單元格。也許一組哈希函數會更適合這個任務? – Mick 2009-10-29 17:33:02
你已經有很多答案了,但是我沒有看到任何人將你指向數據結構食譜(perldoc perldsc)http://perldoc.perl.org/perldsc.html它具有很多用於處理複雜的數據結構。當然,你可能已經看過它,因爲你已經讀了一些perldoc。 – daotoad 2009-10-29 18:22:07