我正在使用Config :: Simple作为我的App配置,我创建了Stats_feeder.cfg
,其中有一个块[stats_interval]
[stats_interval]
1m = 60
15m = 900
我的perl脚本script.pl
my $cfg = new Config::Simple('stats_feeder.cfg') or die Config::Simple->error();
my $hash = $cfg->get_block('stats_interval');
当我运行print Dumper($hash);
时,我得到了
# perl stats_feederv2.pl
$VAR1 = {
'1m' => '300',
'15m' => '900',
'60m' => '3600',
'30m' => '1800'
};
我可以使用$val = $cfg->param('1m');
我正在尝试遍历此哈希并打印键和值,我尝试了以下内容:
foreach my $key ( keys %$hash )
{
print "key $key value $hash{$key}\n";
}
我一直在
Global symbol "%hash" requires explicit package name at stats_feederv2.pl line 42.
Execution of stats_feederv2.pl aborted due to compilation errors.
答案 0 :(得分:2)
您正在处理哈希引用,因此您需要使用$hash->{$key}
像$hash{$key}
这样的表达式试图访问哈希%hash
的元素,而你得到的错误信息是因为哈希不存在。 $hash
和%hash
完全不相关
答案 1 :(得分:1)
$hash{key}
语法:%hash
。在您的情况下,您在哈希引用下有一个匿名哈希。
要在这种情况下访问密钥的值,您应该使用以下语法:$hash_ref->{key}
。变化:
print "key $key value $hash{$key}\n";
要:
print "key $key value $hash->{$key}\n";