我希望爲給定的鍵分配散列(由方法返回)到另一散列中。將散列分配給散列
對於例如,一個方法返回這種形式的哈希值:
hash1->{'a'} = 'a1';
hash1->{'b'} = 'b1';
現在,我想這些散列值分配到另一個哈希調用方法裏面,要達到這樣的:
hash2->{'1'}->{'a'} = 'a1';
hash2->{'1'}->{'b'} = 'b1';
作爲perl的新手,我不確定最好的方法來做到這一點。但聽起來微不足道......
我希望爲給定的鍵分配散列(由方法返回)到另一散列中。將散列分配給散列
對於例如,一個方法返回這種形式的哈希值:
hash1->{'a'} = 'a1';
hash1->{'b'} = 'b1';
現在,我想這些散列值分配到另一個哈希調用方法裏面,要達到這樣的:
hash2->{'1'}->{'a'} = 'a1';
hash2->{'1'}->{'b'} = 'b1';
作爲perl的新手,我不確定最好的方法來做到這一點。但聽起來微不足道......
你的子可能是:
#!/usr/bin/env perl
use strict;
use warnings;
sub mystery
{
my($hashref) = { a => 'a1', b => 'b1' };
return $hashref;
}
my $hashref1 = mystery;
print "$hashref1->{a} and $hashref1->{b}\n";
my $hashref2 = { 1 => $hashref1 };
print "$hashref2->{1}->{a} and $hashref2->{1}->{b}\n";
一個關鍵的一點是,你對與->
箭頭操作符訪問變量符號是處理哈希裁判,不是普通的哈希值。
我們有第一次和第二散:
my %hash1 = (
a => 'a1',
b => 'b1');
my %hash2 = (1 => undef);
我們只能將標值的哈希值,但是這包括引用。舉一個參考,使用反斜槓操作:
$hash2{1} = \%hash1;
我們現在可以取消引用值幾乎一樣在你的榜樣:
print $hash2{1}->{a}; # prints "a1"
要當心使用正確的印記($ @%)的標準。使用您期望的數據類型的符號,這不一定是您聲明的類型。
「perldoc perlreftut」可能很有趣。
謝謝你,這工作得很好! – Saket 2012-07-14 10:59:41