不,当你这样做的时候,你返回的是散列内容的一个副本,而这个副本并没有绑定,就像你在第二段中猜测的那样。
您也正确,为了获得结果,您需要返回对绑定哈希的引用:
return \%myhash;
例子
use Tie::IxHash;
sub make_ordered_hash {
my @hash_contents = (1,11,5,15,3,13);
tie(my %myhash, Tie::IxHash, @hash_contents);
return %myhash;
}
sub make_ordered_hashref {
my @hash_contents = (1,11,5,15,3,13);
tie(my %myhash, Tie::IxHash, @hash_contents);
return \%myhash;
}
my @keys;
my %hash1 = make_ordered_hash();
@keys = keys %hash1;
print "By Value = @keys\n";
my $hash2 = make_ordered_hashref();
@keys = keys %$hash2;
print "By Reference = @keys\n";
结果:
By Value = 1 3 5
By Reference = 1 5 3