简单的Perl模块通过散列循环
我正在使用Config::Simple作为我的应用程序配置,我已经创建了简单的Perl模块通过散列循环,perl,hash,Perl,Hash,我正在使用Config::Simple作为我的应用程序配置,我已经创建了Stats\u feeder.cfg,它有一个block[Stats\u 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_bl
Stats\u feeder.cfg
,它有一个block[Stats\u 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');
当我运行打印转储程序($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.
您正在处理哈希引用,因此需要使用$hash->{$key}
类似于$hash{$key}
的表达式正在尝试访问hash%hash
的元素,您收到的错误消息是因为该hash不存在$hash
和%hash
是完全不相关的您正在处理哈希引用,因此需要使用$hash->{$key}
类似于$hash{$key}
的表达式正在尝试访问hash%hash
的元素,您收到的错误消息是因为该hash不存在$hash
和%hash
是完全不相关的$hash{key}
当您有一个命名hash时,用于打印密钥值的语法是:%hash
。在您的例子中,在散列引用下有一个匿名散列
要在这种情况下访问键的值,应该使用以下语法:$hash_ref->{key}
。更改:
print "key $key value $hash{$key}\n";
致:
$hash{key}
当您有一个命名哈希时,用于打印密钥值的语法有效:%hash
。在您的例子中,在散列引用下有一个匿名散列
要在这种情况下访问键的值,应该使用以下语法:$hash_ref->{key}
。更改:
print "key $key value $hash{$key}\n";
致:
我感谢你的解释