die

Синтаксис

die EXPR

Описание

Будучи вызванным за пределами блока eval, этот оператор выводит на печать (STDERR) значение EXPR и завершает работу программы с состоянием, соответствующим текущему значению переменной $! (она же — еrrno). Если оказалось, что на момент выхода эта переменная равна нулю, то завершение работы программы будет произведено с кодом 255.
При вызове оператора внутри блока eval сообщение об ошибке помещается в переменную $@ и работа eval завершается с неопределенным значением, что позволяет использовать die для генерации исключений.
Примеры:
die "He могу перейти в каталог spool: $!\n" unless chdir '/usr/spool/news';
chdir '/usr/spool/news' or die "He могу перейти в каталог spool: $!\n"
Если значение выражения EXPR не оканчивается символом конца строки, на печать будут выведены номер строки программы и номер входной строки (если в ходе работы программы производился ввод данных), а также будет добавлен символ перевода строки. Понятно, что для последующего анализа программы гораздо полезнее добавить собственную строку «программа остановлена», чем пытаться разобраться в смысле сообщения «at foo line 123». Предположим, что вы запустили программу с именем «canasta». Тогда конструкции
die "/etc/games не существует";
die "/etc/games не существует, программа остановлена";
сформируют соответственно:
/etc/games не существует at canasta line 123.
/etc/games не существует, программа остановлена at canasta line 123.
Конечно, подобная смесь из русских и английских выражений, на взгляд эстетов, выглядит не слишком элегантно, но для анализа системного журнала она все же предпочтительнее. Да, кстати, чтобы системный журнал не обрезал старший бит, необходимо установить русскую локаль.
ПРИМЕЧАНИЕ
Вопросы завершения программы и вывода диагностических сообщений рассмотрены также при описании exit и warn.

При необходимости вы можете также вставить собственный обработчик аварийной ситуации, вызываемый непосредственно перед тем, как die «умерщвляет» вашу программу. Для этого необходимо установить ссылку на подпрограмму обработки в $SIG{__DIE__}. Этот обработчик принимает в качестве аргумента сгенерированное die сообщение об ошибке, которое вы можете изменять по своему усмотрению.



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: