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 завершается со статусом ошибки, и позволяет программам, ожидающим «стандартный» 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 является встроенной, вам не нужно «использовать 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.36.0/vmsish