Использование неинициализированного значения в соответствии с шаблоном (m//)
Я получаю эту ошибку, даже если объявляю переменную regex.
my $pattern = '(Cat\.\sNo\.\s\d+)';
Позже в моем коде я использую $pattern
.
if ($page =~ /$pattern/)
{
push(@array, $element);
}
Но когда я запускаю свой код, он дает мне следующую ошибку и продолжает успешно работать:
Use of uninitialized value in pattern match (m//)
Поиск в Google для этой ошибки, похоже, указывает на сценарии, в которых переменная не была инициализирована, хотя в моем случае, похоже, я уже инициализировал ее?
Ответы
Ответ 1
Это сообщение не сообщает вам, что $pattern
неинициализирован; он говорит вам, что $page
неинициализирован. Если вы ожидаете, что $page
может быть неинициализирован и что O.K., то вы можете обойти это предупреждение и разъяснить будущим читателям исходного кода, написав это:
if (defined($page) && ($page =~ /$pattern/))
Ответ 2
Проблема не $pattern
- проблема $element
Быстрый тест даст тот же результат:
use strict;
use warnings;
my $pattern = '(Cat\.\sNo\.\s\d+)';
my $element =~ /$pattern/;