有时候,一个程序的操作或者配置必须要访问操作系统的环境。Perl提供了两种不同的方式来访问环境变量。你可以使用Perl内置的%ENV散列,或者你可以使用Env模块来访问环境。
两种方法都提供了对环境的双向访问,这就意味着对Perl变量的任何改变都会造成环境变量的改变。这些变化会被传递给任何子处理,但是不会在你的脚本退出之后被保留。
%ENV散列的使用很简单。%ENV散列的关键是环境变量名;散列值就是环境变量值。
下列代码会显示路径环境变量的内容:
print "path is $ENV ";
这段代码会创建(或者覆盖)环境里的PerlVar变量。
$ENV = "Perl Tech Tips";
要删除环境变量,就要使用delete。下面的例子会删除临时的环境变量:
delete $ENV;
访问环境变量的第二种方式是使用Env模块。Env模块会为每个环境变量创建Perl标量或者数组变量。
你可以指定要被导入的特定变量,你也可以导入所有的环境变量。如果你指定了环境变量名,那么它们就不需要作为环境变量而存在。
如果只想访问路径变量,就要使用下面的代码:
useEnvqw(PATH);
print "The path is $PATH ";
如果你不指定变量的类型,它就被当作标量。如果你将一个变量指定为数组(例如使用Envqw(@PATH);),那么它就会被Config::Config作为定界符自动地分割和合并。
下面的代码会在环境里创建(或者覆盖,如果它已经存在的话)PerlVar变量。
useEnvqw(PerlVar);
$PerlVar = "Perl Tech Tips";
Perl为访问环境变量提供了两种不同的方式:%ENV散列和Env模块。根据你的需要以及编写代码的个人喜好,你可以使用两种方式中的任何一种来访问或者更改环境变量。
附加测试代码:
#!/usr/bin/perl
#安裝說明:
#複製程式碼,並存成env.cgi
#以ascii模式上傳至主機cgi-bin目錄後將屬性改成755
$|=1;
print "Content-type: text/html/n/n";
print "<html><head><title>環境變數清單</title>/n";
print "</head>/n";
print "<body>/n";
print "<table border=1>/n";
print "<tr>/n";
print "<td>變數名稱</td>/n";
print "<td>目前狀況</td>/n";
print "</tr>/n";
foreach $fieldname(keys %ENV){
print "<tr>/n";
print "<td>$fieldname</td>/n";
print "<td>$ENV{$fieldname}</td>/n";
print "</tr>/n/n";
}
print "</table>/n";
print "</body></html>/n";
exit;