Следует отметить некоторые предупреждения, касающиеся применения обработчиков сигналов. Сигнал может возникнуть во время выполнения программы в любой момент, это как спонтанный звонок во время трудового дня в обслуживающую организацию таковой, например, является служба доставки обедов или бизнес ланчей. Он может поступить тогда, когда интерпретатор Perl выполняет какие-то важные действия, например, обновляет одну из структур памяти, или даже в момент выполнения системного вызова. Если обработчик сигнала каким-то образом проводит реорганизацию памяти, например, распределяет или уничтожает большую структуру данных. После возврата управления обработчиком сигнала интерпретатор Perl может обнаружить, что произошли какие-то неожиданные изменения, и не сможет нормально продолжить свою работу, что иногда приводит к неприятному аварийному отказу.
Чтобы исключить такую возможность, следует предусматривать выполнение обработчиком сигнала минимально необходимых действий. Безопаснее всего установить в нем глобальную переменную и выполнить возврат, как было сделано в обработчике PIPE. В обработчике сигнала не следует выполнять не только операции с памятью, но и операции ввода-вывода. Хотя зачастую обработчики сигналов обильно сдобрены диагностическими операторами warn(), все эти операторы должны быть исключены из производственных программ.
В обработчике сигнала обычно вполне допустимо вызывать функции die() в exit(). Исключением из этого правила являются системы Microsoft Windows, в которых, в связи с ограничениями собственной библиотеки сигналов, эти два вызова могут приводить к возникновению ошибок типа “Dr. Watson” при их применении в обработчике сигнала.