我有这个代码
foreach my $key (keys %ad_grp) {
# Do something
}
Run Code Online (Sandbox Code Playgroud)
哪个有效.
如果我没有%ad_grp,但是参考$ad_grp_ref,那么对于哈希来说会是什么样子?
mob*_*mob 58
foreach my $key (keys %$ad_grp_ref) {
...
}
Run Code Online (Sandbox Code Playgroud)
Perl::Critic 和达西姆推荐的风格
foreach my $key (keys %{ $ad_grp_ref }) {
...
}
Run Code Online (Sandbox Code Playgroud)
出于对可读性和维护的担忧(因此,当您需要使用时,您不需要仔细考虑要改变%{ $ad_grp_obj[3]->get_ref() }的内容%{ $ad_grp_ref })
在Perl 5.14(它现在在Perl 5.13中工作)中,我们将能够在哈希引用上使用键
use v5.13.7;
foreach my $key (keys $ad_grp_ref) {
...
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所述,您必须取消引用该引用。该keys函数要求其参数以%开头:
我的偏好:
foreach my $key (keys %{$ad_grp_ref}) {
Run Code Online (Sandbox Code Playgroud)
据康威:
foreach my $key (keys %{ $ad_grp_ref }) {
Run Code Online (Sandbox Code Playgroud)
猜猜你应该听谁的话...
您可能需要阅读Perl参考文档。
如果您发现自己做了很多工作,引用了哈希表,哈希表和哈希表,那么您可能要开始考虑使用面向对象的Perl了。有很多不错的小教程的 Perl的文档。