Spec-Zone.ru › Perl 5.38

Env

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ОГРАНИЧЕНИЯ
  • АВТОР

ИМЯ

Env - модуль Perl, который импортирует переменные среды как скаляры или массивы

СИНТАКСИС

use Env;
use Env qw(PATH HOME TERM);
use Env qw($SHELL @LD_LIBRARY_PATH);

ОПИСАНИЕ

Perl хранит переменные среды в специальном хэше под названием %ENV. Для случаев, когда этот метод доступа неудобен, модуль Perl Env позволяет обрабатывать переменные среды как скалярные или массивно-индексированные переменные.

Функция Env::import() связывает переменные среды с подходящими именами со скалярными переменными Perl с теми же именами. По умолчанию она связывает все существующие переменные среды (keys %ENV) со скалярными переменными. Если функция import получает аргументы, она использует их как список переменных для связи; это нормально, если некоторые из них ещё не существуют. Префикс скалярного типа '$' подразумевается для любого элемента этого списка, не имеющего префикса '$' или '@'. Массивы реализованы в терминах split и join, используя $Config::Config{path_sep} в качестве разделителя.

После того, как переменная среды связана, её можно использовать как обычную переменную. Вы можете получить её значение

@path = split(/:/, $PATH);
print join("\n", @LD_LIBRARY_PATH), "\n";

или изменить его

$PATH .= ":/any/path";
push @LD_LIBRARY_PATH, $dir;

как вам угодно. Однако имейте в виду, что каждый доступ к связанной массивно-индексированной переменной требует нового разбиения строкового представления переменной среды.

Код:

use Env qw(@PATH);
push @PATH, '/any/path';

практически эквивалентен:

use Env qw(PATH);
$PATH .= ":/any/path";

за исключением того, что если $ENV{PATH} изначально была пустой, второй подход оставляет в ней (странное) значение ":/any/path", а первый подход оставляет в ней значение "/any/path".

Чтобы удалить связанную переменную среды из окружения, присвойте ей неопределённое значение

undef $PATH;
undef @LD_LIBRARY_PATH;

ОГРАНИЧЕНИЯ

В системах VMS массивы, связанные с переменными среды, являются только для чтения. Попытка изменить их приведёт к предупреждению.

АВТОР

Chip Salzenberg <chip@fin.uucp> и Gregor N. Purdy <gregor@focusresearch.com>

© 1993–2023 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.38.0/Env

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API