Безусловно, реализация сигналов в системах Windows в настоящее время является чрезвычайно ограниченной, в отличие от его технических средств отладки и диагностики при работе или обслуживание другого высокотехнологичного оборудования. Простые действия, например, применение обработчика для перехвата сигнала прерывания, вполне применимы. Более сложные действия, такие как применение обработчиков CHLD для перехвата сообщений о завершении работы подпроцессов, не выполняются. В этой области продолжается активная разработка, поэтому обязательно проверяйте документацию к очередной версии, прежде чем пытаться написать или адаптировать любой код, который в значительной мере зависит от сигналов. Обработка сигналов в версии MacPerl не реализована.
Рассмотрим, как выполняется прекращение по тайм-ауту продолжительных системных вызовов. Сигнал может возникнуть в то время, как интерпретатор Perl выполняет системный вызов. В большинстве случаев Perl автоматически возобновляет выполнение системного вызова, начиная именно с того места, где было прервано выполнение.
Однако несколько системных вызовов являются исключением из этого правила. Одним из них является функция sleep(), которая приостанавливает сценарий на указанное число секунд. Однако если выполнение функции sleep() прервано каким-то сигналом, она преждевременно прекращает свою работу, возвращая число секунд, проведенных в состоянии ожидания перед активизацией. Это свойство функции sleep() является исключительно полезным, поскольку оно позволяет перевести сценарий и состояние ожидания до тех пор, пока не произойдет некоторое ожидаемое событие.