我会试着用一个例子来说明这一点。以散列的散列的一个常见的例子:如何在脚本执行期间创建匿名哈希并将哈希添加到已知哈希中?
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