Интерпретатор Perl на самом деле делает возврат собственных кодов выхода, если скрипт не запускается. Большинство синтаксических ошибок приводят к коду выхода 9:
Неизвестная функция / запрещенное голое слово:
perl -e 'use strict; print scalar(localtime); schei;'
$? = 9
деление на ноль:
perl -e 'use strict; print scalar(localtime); my $s = 1/0;'
$? = 9
синтаксическая ошибка:
perl -e 'use strict; print scalar(localtime); my $ff; $ff(5;'
$? = 9
с использованием штампа:
perl -e 'use strict; print scalar(localtime); die "twaeng!"'
$? = 9
неизвестный модуль был единственной ситуацией, в которой Perl по-разному выходил:
perl -e 'use strict; use doof; print scalar(localtime);'
$? = 2
Кстати, я все еще ищу полный список кодов выхода интерпретатора Perl. Кто-нибудь получил представление, где искать, кроме источников интерпретаторов Perl?