微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl – 为什么通过键遍历哈希然后打印每个值会导致未初始化的警告?

每当我通过其键遍历哈希,然后打印每个值时,我得到“在连接(.)或字符串…中使用未初始化的值”警告.即使哈希显然已经预先初始化了.我想要的输出是打印的,但我仍然想知道为什么会导致警告,特别是直接访问值(在循环之外)时没有警告.
#!/usr/bin/perl
use warnings;
use strict;

my %fruit = ();
%fruit = ('Apple' => 'Green','StrawBerry' => 'Red','Mango' => 'Yellow');

#works
print  "An apple is $fruit{Apple} \n";

#gives warnings
foreach my $key (%fruit)
{
  print "The color of $key is $fruit{$key} \n";
}

#also gives warnings
foreach my $key (%fruit)
{
    my $value = $fruit{$key};
    print "$value \n";
}

考虑上面的代码.我想perl看到了第一次打印和第二次打印之间的差异.但为什么?为什么在循环外检索散列值和检索循环内部的has值之间有区别?

谢谢!

解决方法

在列表上下文中使用散列会产生键和值.因此,foreach我的$key(%fruit)遍历键,值,键,值…

你需要的是foreach我的$key(键%fruit).

原文地址:https://www.jb51.cc/Perl/172138.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐