Perl – 为什么通过键遍历哈希然后打印每个值会导致未初始化的警
发布时间:2020-12-15 21:50:58 所属栏目:大数据 来源:网络整理
导读:每当我通过其键遍历哈希,然后打印每个值时,我得到“在连接(.)或字符串…中使用未初始化的值”警告.即使哈希显然已经预先初始化了.我想要的输出是打印的,但我仍然想知道为什么会导致警告,特别是直接访问值(在循环之外)时没有警告. #!/usr/bin/perluse warning
每当我通过其键遍历哈希,然后打印每个值时,我得到“在连接(.)或字符串…中使用未初始化的值”警告.即使哈希显然已经预先初始化了.我想要的输出是打印的,但我仍然想知道为什么会导致警告,特别是直接访问值(在循环之外)时没有警告.
#!/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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |