内容

名称

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 函数接收参数,它将它们视为要绑定的变量列表;即使它们不存在也是可以的。对于此列表中未以 '$' 或 '@' 为前缀的任何元素,将推断出标量类型前缀 '$'。数组是根据 splitjoin 实现的,使用 $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 <[email protected]> 和 Gregor N. Purdy <[email protected]>