В качестве примера рассмотрим следующий бессмысленный скрипт:
use strict;
use warnings;
my $uninitialisedValue;
while(<>){
print ${$uninitialisedValue}{$_},"\n";
}
Который запускается из командной строки:
$ perl warningPrinter.pl < longfile.txt
Независимо от того, что содержит STDIN, STDOUT будет заполнен:
Use of uninitialized value in print at warningPrinter.pl line 16, <> line 1.
Use of uninitialized value in print at warningPrinter.pl line 16, <> line 2.
Use of uninitialized value in print at warningPrinter.pl line 16, <> line 3.
Use of uninitialized value in print at warningPrinter.pl line 16, <> line 4.
...
Я работаю с очень длинными файлами, поэтому получение такого вывода при тестировании моего скрипта как минимум слегка раздражает. Процесс может занять некоторое время, чтобы ответить на сигнал завершения CTRL-c, и мой терминал внезапно заполняется тем же сообщением об ошибке.
Есть ли способ заставить Perl выводить только первый экземпляр идентичного и повторяющегося предупреждающего сообщения, или просто сделать предупреждающие сообщения фатальными для выполнения скрипта? Поскольку я никогда не создавал скрипт, который работает, несмотря на наличие в нем предупреждений, я бы согласился. Но, вероятно, было бы удобнее, если бы я мог заставить perl выводить одинаковые предупреждения только один раз.