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>