我有一个%hashmap
和一个数组@values
。
在我的代码中,%hashmap
正在创建$hashmap{$key}="$name";
创建%hashmap
之后,我需要将它的值添加到相同的%hashmap
,但使用不同的键,新的hashmap如下所示:
@hashvalues=($name,$type,$Statement,\@parents,\@children)
$hashmap{$newkey}=\@hashvalues;
我想将$name
从$hashmap{$key}
推送到\@children
的{{1}}
到目前为止,这是我的代码:
$hashmap{$newkey}
# first i check if the $hashmap exists so i know i update it
if(exists$hashmap{$name}){
my $auxiliary=\@{$hashmap{$name}};
push(@children,@$auxiliary);
}
my @hashvalues=($name,$type,$Statement,\@parents,\@children);
$hashmap{$name}=\@hashvalues;
我希望%hash
在此处创建,没有其他记录:
push
我有兴趣存储和推送的值是if ($parent ne @$hashvalues2[0]) {
$hashmap{$parent}="$child";
}
。
这里的地方是相同的%hash将再次创建,但是字段名称,类型等:(不是空字段!,它们都有一个先前分配的值)
$child
我想看看@hashvalues = ($name, $type, $Statement, \@parents, \@children)
$hashmap{$newkey} = \@hashvalues;
之前是否创建了%hash
所以我用这段代码检查一下:
@hasvalues=($name..
如果有记录,我想通过推送if (exists$hashmap{$name}) { Do Code... }
的{{1}}中的值$child
来更新%哈希,那么当\@parents
时type,name ..将使其具有前一版本的$ child值。
以下是代码的顺序:
@hashvalues
%hash
if (exists$hashmap{$name}) { Do Code; }
以下是整个代码:
my @hashvalues = ($name, $type, $Statement, \@parents, \@children);
$hashmap{$name} = \@hashvalues;
- 一系列陈述
if ($parent ne @$hashvalues2[0]) {
$hashmap{$parent} = "$child";
}
- 一个更大的字符串,我从
我在@FileStatements
填写我收集的所有数据
$Statement
答案 0 :(得分:0)
你的问题还远未明确,但我想我可以断章取义这个问题
我想将
$hashmap{$key}
中的$ name推送到\@children
的{{1}}
我认为你已经有了类似的东西
$hashmap{$newkey}
请注意,标识符my %hashmap;
my ( $name, $type, $Statement, @parents, @children );
my @hashvalues = ( $name, $type, $Statement, \@parents, \@children );
$hashmap{$newkey} = \@hashvalues;
,name
,type
等已经消失,而这五个值只是数组的元素
来自Statement
的$ name是数组的第一个元素,所以它是
$hashmap{$key}
$hashmap{$key}[0]
的{{1}}是数组的第五个元素,或者
@children
要将第一个推入第二个,您需要
$hashmap{$newkey}
您还应该使用比$hashmap{$newkey}[4]
更有意义的内容作为您的标识符。 push @{ $hashmap{$newkey}[4] }, $hashmap{$key}[0]
表示该变量是一个哈希(没有Perl哈希映射),您应该使用该名称来描述其内容的性质