Рассмотрим в качестве примера следующую бессмыслицу script:
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.
...
Я работаю с очень длинными файлами, поэтому получение этого результата при тестировании моего script, по крайней мере, слегка раздражает. Процесс может реагировать на сигнал завершения CTRL-c, и мой терминал внезапно заполняется тем же сообщением об ошибке.
Есть ли способ получить perl для печати только первого экземпляра идентичного и повторяющегося предупреждающего сообщения или просто сделать предупреждающие сообщения фатальными для выполнения script? Видя, что я никогда не производил script, который работает, несмотря на то, что в них есть предупреждения, я бы тоже согласился. Но его, вероятно, более удобно, если я могу получить perl для печати одинаковых предупреждений только один раз.