Вы можете использовать операционную систему для подачи сигнала ALRM (аварийного сигнала), после чего вы можете выйти из процесса через заданное количество секунд.
Так, например, если в верхней части вашего сценария вы поставили:
alarm 300;
Это приведет к тому, что ваш процесс получит сигнал ALRM. Это немедленно убьет ваш процесс, или вы можете перехватить его и очистить процесс до его смерти.
Для дальнейшего чтения: http://perldoc.perl.org/functions/alarm.html
Вы можете перехватить сигнал следующим образом:
$SIG{ALRM} = sub {
# Clean up process here and exit
};
В ответ на ваши правки «правка: как получить идентификатор процесса для запущенного процесса в Windows и Unix и как его убить во время ожидания»
Идентификатор процесса хранится в perl как $$, поэтому:
print 'My process ID is:', $$, "\n";