Не думаю, что это сообщение об ошибке очень часто встречается. Во всяком случае, раньше я с ним не сталкивался, но недавно это сбило меня с толку во время обучающего курса по Perl.
Unknown warnings category '1'
Целиком сообщение об ошибке выглядит так:
Unknown warnings category '1' at hello_world.pl line 4
BEGIN failed--compilation aborted at hello_world.pl line 4.
Hello World
Это меня сильно раздосадовало, учитывая то, что код был совсем простым:
use strict;
use warnings
print "Hello World";
Я довольно долго смотрел на код и не видел в нем никаких проблем. Как вы могли заметить, он все-таки выводит строку "Hello World".
Меня это сбило с толку, и я не сразу заметил то, что вы, возможно, уже увидели:
Проблема в пропущенной точке с запятой после выражения use warnings
. Perl выполняет
выражение print, оно выводит строку и возвращает 1, указывая на успешность выполнения.
Perl решает, что я написал use warnings 1
.
Существует множество категорий предупреждений, но нет такой, которая называется "1".
Unknown warnings category 'Foo'
Это другой случай той же проблемы.
Сообщение об ошибке выглядит так:
Unknown warnings category 'Foo' at hello.pl line 4
BEGIN failed--compilation aborted at hello.pl line 4.
и пример кода показывает, как работает интерполяция строк. Это второй пример в моем уроке, следующий после "Hello World".
use strict;
use warnings
my $name = "Foo";
print "Hi $name\n";
Пропущенная точка с запятой
Конечно, это просто частный случай все той же общей проблемы с пропущенной точкой с запятой. Perl замечает это только на следующем выражении.
Обычно хорошей идеей будет проверить строчку перед той, о которой говорится в сообщении об ошибке. Возможно, там пропущена точка с запятой.