vmsish
СОДЕРЖАНИЕ
ИМЯ
vmsish - Perl-pragma для управления особенностями языка VMS
СИНТАКСИС
use vmsish;
use vmsish 'status'; # or '$?'
use vmsish 'exit';
use vmsish 'time';
use vmsish 'hushed';
no vmsish 'hushed';
vmsish::hushed($hush);
use vmsish;
no vmsish 'time'; ОПИСАНИЕ
Если список импорта не указан, предполагаются все возможные функции VMS. В настоящее время доступны четыре особенности VMS: 'status' (также известный как '$?'), 'exit', 'time' и 'hushed'.
Если вы не работаете в среде VMS, этот модуль ничего не делает.
-
vmsish status -
Это заставляет
$?иsystemвозвращать собственный код возврата VMS вместо эмуляции кода возврата POSIX. -
vmsish exit -
Это заставляет
exit 1генерировать успешный выход (со статусом SS$_NORMAL), а не эмулировать UNIX exit(), которое считаетexit 1признаком ошибки. Как и функция exit() CRTL,exit 0также отображается на код возврата SS$_NORMAL, а любой другой аргумент exit() используется непосредственно как код возврата Perl. -
vmsish time -
Это заставляет все временные метки относиться к местному часовому поясу, а не к универсальному времени (также известному как всемирное координированное время, или GMT).
-
vmsish hushed -
Это подавляет вывод сообщений статуса VMS в SYS$OUTPUT и SYS$ERROR, если Perl завершается с ошибкой, и позволяет программам, ожидающим «unix-подобный» Perl, избежать необходимости разбора сообщений об ошибках VMS. Оно не подавляет сообщения самого Perl, а только сообщения, сгенерированные DCL после завершения Perl. Символ DCL $STATUS по-прежнему будет содержать код завершения, но с установленным битом старшего разряда:
ПРИМЕР: $ perl -e"exit 44;" Non-hushed error exit %SYSTEM-F-ABORT, abort DCL message $ show sym $STATUS $STATUS == "%X0000002C"
$ perl -e"use vmsish qw(hushed); exit 44;" Hushed error exit $ show sym $STATUS $STATUS == "%X1000002C"Флаг 'hushed' имеет глобальный охват во время компиляции: команды exit() или die(), скомпилированные после 'vmsish hushed', будут подавлены при выполнении. Вызов "no vmsish 'hushed'" отключает флаг hushed.
Статус флага hushed также влияет на вывод сообщений об ошибках VMS при компиляции. Опять же, вы по-прежнему получаете сообщение об ошибке Perl (и код в $STATUS)
ПРИМЕР: use vmsish 'hushed'; # включить флаг hushed use Carp; # Carp скомпилирован hushed exit 44; # будет подавлено croak('I die'); # будет подавлено no vmsish 'hushed'; # выключить флаг hushed exit 44; # не будет подавлено croak('I die2'): # будет подавлено, croak был скомпилирован hushed
Вы также можете управлять флагом 'hushed' во время выполнения, используя встроенную функцию vmsish::hushed(). Без аргумента она возвращает статус hushed. Поскольку vmsish::hushed встроенная, вам не нужно использовать "use vmsish", чтобы вызвать её.
ПРИМЕР: if ($quiet_exit) { vmsish::hushed(1); } print "Sssshhhh...I'm hushed...\n" if vmsish::hushed(); exit 44;
Обратите внимание, что exit() или die(), скомпилированные с флагом 'hushed' из-за "use vmsish", не отключаются с помощью vmsish::hushed(0) во время выполнения.
Сообщения об ошибках из ядра Perl, как правило, более серьезны и не подавляются.
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.30.3/vmsish