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 <[email protected]> 和 Gregor N. Purdy <[email protected]>