嗨,我有两个哈希值 %Asset 和 %Activity
%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']
}
最佳答案
你想要的是哈希值的哈希值。从概念上讲,您可以将有关 Assets 的所有信息合并到一个哈希中。
my %dave = (
name => "Dave",
computer_name => "X",
activity => "A"
);
然后,这将进入由其名称作为键的所有 Assets 的更大哈希值。
$Assets{$dave{name}} = \%dave;
如果您想查找 Dave 的事件...
print $Assets{Dave}{activity};
您可以提取有关 Dave 的所有信息并将其作为哈希引用传递。
my $dave = $Assets{Dave};
print $dave->{activity};
这种结构不可避免地会导致将您的 Assets 建模为对象。
您可以在 Perl Data Structures Cookbook 中了解有关哈希值的哈希值的更多信息。 .
关于Perl根据某个键连接2个散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061977/