即使我已声明我的正则表达式变量,我也收到此错误。
my $pattern = '(Cat\.\sNo\.\s\d+)';
稍后在我的代码中,我使用了$pattern
。
if ($page =~ /$pattern/)
{
push(@array, $element);
}
但是当我运行我的代码时,它会给我以下错误,并继续成功运行:
Use of uninitialized value in pattern match (m//)
在Google上搜索此错误似乎指向变量尚未初始化的情况,尽管在我的情况下,我似乎已经初始化了它?
答案 0 :(得分:22)
该消息并未告诉您$pattern
未初始化;它告诉你$page
未初始化。如果你期望$page
可能未被初始化,那就是O.K.,那么你可以绕过警告,并为未来的源代码读者清楚地写下这个:
if (defined($page) && ($page =~ /$pattern/))
答案 1 :(得分:1)
问题不是$pattern
- 问题是$element
快速测试会产生相同的结果:
use strict;
use warnings;
my $pattern = '(Cat\.\sNo\.\s\d+)';
my $element =~ /$pattern/;