Запретить Perl печатать одинаковые предупреждающие сообщения

В качестве примера рассмотрим следующий бессмысленный скрипт:

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 выводить одинаковые предупреждения только один раз.

10
задан MattLBeck 19 March 2012 в 12:27
поделиться