內容

名稱

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 <chip@fin.uucp> 和 Gregor N. Purdy <gregor@focusresearch.com>