Perl基于某个键连接2个哈希值

时间:2016-05-05 23:39:58

标签: perl hash concatenation hashtable

嗨我有两个哈希值%资产& %活性

%Asset
Name,Computer Name
David,X
Clark,Y
Sam,Z

%Activity
Name,Activity
David,A
Clark,B
Sam,C
David,D
Clark,E
Sam,F

第二个哈希的名称重复多次(可能超过2个)..我想得到一个简洁信息的哈希..像

Name,Computer Name,Activity
David,X,A&D
Clark,Y,B&E
Sam,Z,C&F

我在伪代码中的想法是这样的;

foreach (@Activity{qw[Name]}) {
    push @Asset{qw[Name Activity]}, $Activity['Activity']

}

1 个答案:

答案 0 :(得分:2)

你想要的是散列哈希。从概念上讲,您将有关资产的所有信息合并为一个哈希值。

my %dave = (
    name          => "Dave",
    computer_name => "X",
    activity      => "A"
);

然后,这将进入一个更大的散列,其中包含由其名称键入的所有资产。

$Assets{$dave{name}} = \%dave;

如果你想找到Dave的活动......

print $Assets{Dave}{activity};

您可以提取有关Dave的所有信息并将其作为哈希引用传递。

 my $dave = $Assets{Dave};
 print $dave->{activity};

这种结构不可避免地导致将资产建模为对象。

您可以在Perl Data Structures Cookbook中了解有关哈希哈希的更多信息。