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–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/Env