如何保留添加哈希元素的顺序 对于第二个VAR?
(哈希哈希)
例如:
use Tie::IxHash;
my %hash;
tie %hash, "Tie::IxHash";
for my $num (0 .. 5){
$hash{"FirstVal$num"}++;
}
for my $num (0 .. 5){
$hash{"FirstValFIXED"}{"SecondVal$num"}++;
}
print Dumper(%hash);
转出结果时,$ VAR14不会保留插入顺序:
$VAR1 = 'FirstVal0';
$VAR2 = 1;
$VAR3 = 'FirstVal1';
$VAR4 = 1;
$VAR5 = 'FirstVal2';
$VAR6 = 1;
$VAR7 = 'FirstVal3';
$VAR8 = 1;
$VAR9 = 'FirstVal4';
$VAR10 = 1;
$VAR11 = 'FirstVal5';
$VAR12 = 1;
$VAR13 = 'FirstValFIXED';
$VAR14 = {
'SecondVal5' => 1,
'SecondVal4' => 1,
'SecondVal2' => 1,
'SecondVal1' => 1,
'SecondVal3' => 1,
'SecondVal0' => 1
};
我知道我可以通过某种排序操作来欺骗这个例子,但在我真正的问题中,元素没有编号或者无法按顺序排序。 哈希多级订单插入是否有任何简单的函数/操作?
谢谢,
Yodar。
答案 0 :(得分:5)
看看Tie::Autotie。它会自动绑定由自动生成创建的新哈希。 perldoc页面显示了使用Tie :: IxHash的示例。
答案 1 :(得分:2)
您需要额外的“\”,如下所示。
print Dumper(\%hash);
答案 2 :(得分:0)
你的意思是散列哈希?你需要绑定Tie :: IxHash外部哈希的每个值。
use strict;
use warnings;
use Tie::IxHash;
my $hash={};
my $t = tie(%$hash, 'Tie::IxHash', 'a' => 1, 'b' => 2);
%$hash = (first => 1, second => 2, third => 3);
$hash->{fourth} = 4;
print join(', ',keys %$hash),"\n";
my %new_hash=('test'=>$hash);
$new_hash{'test'}{fifth} = 5;
print join(', ',keys %{$new_hash{'test'}}),"\n";
$new_hash{'test'}{fifth}++;
print join(', ',values %{$new_hash{'test'}}),"\n";
答案 3 :(得分:-1)
foreach my $sortline (sort {$a<=>$b} keys %{$hash->{"first_field"}}){
my $name;
# Soultion to touch a Key with keys within it:
#---------------------------------------------
foreach my $subkey (keys %{$hash->{"first_field"}->{$sortline}})
{$name = $subkey;}
#---------------------------------------------
}
This有用的答案帮助了我。