perl – 如何在插入警告后抑制哈希?
我的代码中的所有内容都运行良好,但我收到此错误.我怎么能压制这个警告? 解决方法
这警告:
use strict; use warnings; use Data::Dumper; my %h = (a=>1); while (my ($k,$v) = each %h) { $h{b} = 2; } print Dumper %h; 这使警告无声: use strict; use warnings; use Data::Dumper; my %h = (a=>1); { no warnings qw(internal); while (my ($k,$v) = each %h) { $h{b} = 2; } } print Dumper %h; 请注意,静音的警告类别称为内部.我怎么知道这个?对于Perl的警告类别,我有一些惊人的记忆吗?不是.所有Perl的错误和警告消息都在perldiag中有详细记录;对于每个警告,它提到它所属的类别. 也就是说,这个警告告诉你一个真正的问题.您的代码行为未定义;如果你切换到不同版本的Perl,它可能突然开始采取不同的行动.关闭警告比修复你的代码更好! 在上面的例子中,快速解决方法是使用每个循环来复制%h而不是%h本身. use strict; use warnings; use Data::Dumper; my %h = (a=>1); { my %tmp = %h; while (my ($k,$v) = each %tmp) { $h{b} = 2; } } print Dumper %h; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |