我有以下几行代码,
foreach ($abc) {
my ($match) = $_ =~ /([0-9]{5}(?!.*([0-9]{5})))/;
$zipCode_count{$match} += 1 if $match ne '';
}
当我执行它时,它会不断发出警告:
在parseZipCode.pl行的字符串ne中使用未初始化的值$ match 8,第51行。
我该怎样摆脱它?感谢
答案 0 :(得分:2)
$match
将为undef
。 $match
没有办法成为空字符串。
建议修复:如果匹配失败,则跳过循环:
my ($match) = /(...)/ or next;
$zipCode_count{$match}++;
或者,将条件更改为
$zipCode_count{$match}++ if defined $match;
补充说明:
++
通常优于+= 1
。$_
zipCode_count
是一个非常可怕的变量名称 - 使用camelCase
或 snake_case
,但请不要同时使用这两个名称!