哈希在函数之间没有正确传递

时间:2014-11-04 01:29:28

标签: perl

我在函数中设置了一个用户哈希,其中包含以下内容,

push @{$profile{$index}{$infoName}}, $information

并使用print Dumper(\%profile); index++;在设置的函数中打印它,打印每个索引

`$VAR1 = { '374' => { 'degree' => [ 'CS' ], 'birthdate' => [ '1973/12/13' ], 'gender' => [ 'M' ],...}

$VAR1 = { '375' => { 'degree' => [ 'CS' ], 'birthdate' => [ '1933/02/03' ], 'gender' => [ 'F' ],...}`

当我尝试使用print "${$profile{$currIndex}{'gender'}}";在另一个函数的foreach循环中访问它时,我得到奇怪的行为,其中print返回一个空字符串并在散列中显示一些随机数:'$VAR1 = { '4' => {}, '1' => {}, '3' => {}, '2' => {}, '378' => { 'birthdate' => [ '1961/03/29' ], 'gender' => ['F'],..}

如何在循环中正确访问性别领域?

1 个答案:

答案 0 :(得分:0)

  

推送@ {$ profile {$ index} {$ infoName}},$ information;

     

打印“$ {$ profile {$ currIndex} {'gender'}}”;

我甚至不确定第二行实际上是做什么的。在我的Ubuntu上,perl会产生错误:不是标量引用。

你想要的是,打印所有数组元素:

print "@{$profile{$currIndex}{'gender'}}\n";

或者,打印第一个:

print $profile{$currIndex}->{'gender'}->[0], "\n";

leaf元素是一个数组引用,必须如此解除引用。

我不确定你为什么使用数组引用。在示例数据中,数组中没有多个元素。可能你只想写这个? -

$profile{$index}{$infoName} = $information;
...
print "$profile{$currIndex}{'gender'}\n";