有没有人可以解释我如何将数组推入嵌套哈希。假设我创建了一个嵌套的哈希,并希望将数组推入key,这是另一个键的值,以及如何访问这些数组值。请原谅,如果我在解释我的查询时技术错误。
以下是我的代码的一部分:
if ($line !~ /#/)
{
@region = split /\t/, $line;
@ancestor = split /:/, $region[8];
my @div = split /\s/, $ancestor[0];
push @value, {$region[3],$region[4]};
#print "$region[3],$region[4]\n";
push @{$hash{$div[1]}{$region[0]}},$region[3],$region[4];
}
答案 0 :(得分:0)
使用方括号表示匿名数组。使用花括号进行匿名哈希。
push @value, [ $region[3], $region[4] ];
push @{$hash{$div[1]}{$region[0]}}, [ $region[3], $region[4] ];
答案 1 :(得分:0)
以下是创建多维哈希的代码。
my $filename = 'out.txt';
my %hash = ();
open(my $fh, $filename) or die "Could not open file '$filename' $!";
while (my $line = <$fh>) {
chomp $row;
if ($line !~ /#/)
{
@region = split /\t/, $line;
$len = scalar @region;
if($len >8){
@ancestor = split /:/, $region[8];
my @div = split /\s/, $ancestor[0];
push @value, {$region[3],$region[4]};
push @{$hash{$div[1]}{$region[0]}},[$region[3],$region[4]];
}
}
}
现在要访问哈希,您可以使用以下代码:
for my $key1 (keys %hash) {
print("Hello $key1");
for my $key2 (keys %{$hash{$key1}}){
print("\t$key2\n");
@res = @{$hash{$key1}{$key2}};
foreach my $arr(@res){
print("\t\t");
print join(",", @{$arr}), "\n";
}
}
print("\n");
}
希望上面的代码对您有用。如果您需要任何进一步的帮助,请在评论中告诉我。