我在函数中设置了一个用户哈希,其中包含以下内容,
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'],..}
如何在循环中正确访问性别领域?
答案 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";