我有一个散列(%filehandle),它将文件句柄存储为其值。但我无法打印出来。
我的哈希看起来像这样:
my %filehandle;
foreach my $output (@outputs){
foreach my $fp (@fp_values_array){
$filehandle{$output}{$fp}=undef;
}
}
print Dumper \%filehandle;
$VAR1 = {
'GMAF' => {
'0.05' => \*{'::$__ANONIO__'},
'1' => \*{'::$__ANONIO__'},
'0.001' => \*{'::$__ANONIO__'}
}
};
我知道问题是这些值是引用,但我从perl开始,我不知道如何访问它们......
我尝试过这样的事情:
print "$_\n" for (keys ${$filehandle{GMAF}{$fp_value_array}});
但它没有用。
Type of argument to keys on reference must be unblessed hashref or arrayref at report.pl line 369, <INPUT> line 5000.
如果有人可以帮助我,我将非常感激。
先谢谢!
答案 0 :(得分:1)
print "$_\n" for (keys ${$filehandle{GMAF}{$fp_value_array}});
应该是:
for my $fp_value_array (keys %{$filehandle{GMAF}}) {
print $filehandle{GMAF}{$fp_value_array};
}
哪个取消引用存储在$filehandle{GMAF}
中的hashref,使用键来获取它的键,并迭代键以字符串化并打印对每个键中存储的文件句柄值的引用。
答案 1 :(得分:0)
文件句柄没有与之关联的文件名。它们包装文件描述符。有特定于操作系统的方法从文件描述符(如果有)获取名称,但最好的办法是将名称与句柄一起放在哈希中。
{
GMAF => {
'0.05' => {
fn => ...,
fh => ...,
},
'1' => {
fn => ...,
fh => ...,
},
'0.001' => {
fn => ...,
fh => ...,
},
},
}