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–2021 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.34.0/vmsish