vmsish
СОДЕРЖАНИЕ
ИМЯ
vmsish - прагма Perl для управления функциями языка, специфичными для 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» также влияет на вывод сообщений об ошибках 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(), скомпилированные «приглушенными» из-за «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.32.0/vmsish