在模式匹配中使用未初始化的值(m //)

kur*_*uki 16 perl

即使我已经声明了我的正则表达式变量,我也会收到此错误.

my $pattern = '(Cat\.\sNo\.\s\d+)';

后来在我的代码中我使用了$pattern.

if ($page =~ /$pattern/)
{
  push(@array, $element);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的代码时它会给我以下错误,并继续成功运行:

Use of uninitialized value in pattern match (m//)
Run Code Online (Sandbox Code Playgroud)

在Google上搜索此错误似乎指向变量尚未初始化的情况,尽管在我的情况下,我似乎已经初始化了它?

rua*_*akh 23

那条消息并没有告诉你这$pattern是未初始化的; 它告诉你这$page是未初始化的.如果你期望这$page可能是未初始化的,那没关系,那么你可以绕过警告,并为源代码的未来读者清楚地写清楚:

if (defined($page) && ($page =~ /$pattern/))
Run Code Online (Sandbox Code Playgroud)