Что означает код состояния интерпретатора Perl? - PullRequest
4 голосов
/ 12 марта 2010

Я пытаюсь выполнить копию интерпретатора Perl, используя Java Runtime.exec (). Однако он вернул код ошибки 9. После запуска файла несколько раз интерпретатор perl загадочным образом начал возвращать код 253 без каких-либо изменений в моей команде.

Что означает код 253 / code 9? Поиск в Google по кодам выхода perl интерпретатора ничего не дал. Где я могу найти список кодов выхода для интерпретатора Perl?

Ответы [ 5 ]

7 голосов
/ 12 марта 2010

См. perldoc perlrun :

Если программа синтаксически верна, она выполняется. Если программа запускается до конца, не нажимая оператор exit() или die(), подразумевается неявное exit(0), указывающее на успешное завершение.

Таким образом, программа, которую вы запускаете, должна каким-то образом указывать эти значения выхода через die , exit или эквивалентный.

4 голосов
/ 12 марта 2010

Сам Perl не имеет определенных кодов выхода; если интерпретатор perl не дает сбоя действительно ужасным образом, код выхода определяется программой, которая работает perl, а не самой perl.

4 голосов
/ 12 марта 2010

При нормальных обстоятельствах perl вернет все, что возвращает программа, которую он запускает. Следовательно, вы не можете обобщить значение возвращаемого значения, не зная программу, в которой оно выполняется.

3 голосов
/ 06 ноября 2010

Интерпретатор 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?

1 голос
/ 12 марта 2010

Поскольку код ошибки изменился после некоторых запусков; если вы запускаете приложение Java как непрерывно работающее веб-приложение, проверьте, не является ли это утечкой памяти.

Вы можете протестировать сценарий perl на различные проблемы, запустив его с параметрами -Tw интерпретатора perl, для включенных запятнанных режимов и предупреждений, см. perlrun для получения дополнительной информации об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...