perl中的环境变量

时间:2017-08-22 04:03:50

标签: perl environment-variables

我似乎只能通过执行以下操作来访问perl中的环境变量:

use Env;
print ${PATH};

这是预期的行为吗?

Env docs说你需要做$ENV{PATH}

3 个答案:

答案 0 :(得分:6)

Env

  

Perl将环境变量维护在名为java.sql.*的特殊哈希中。对于此访问方法不方便时,Perl模块%ENV允许将环境变量视为标量或数组变量。

所以是的,这是合法的,预期使用的变量是Env$PATH$USER等。

然而,这个模块

  

默认情况下,它将所有现有环境变量($HOME)绑定到标量。

我更喜欢直接使用%ENV hash,而不是keys %ENV - 对应的tie

答案 1 :(得分:2)

是的,由于两个因素的相互作用,这是预期的行为:

  1. 您使用了Env模块,该模块将$ENV{PATH}别名为$PATH
  2. 请注意,$ENV{PATH} 总是在Perl中可用。 use Env只是为%ENV的内容添加了别名,因此无需提供%ENV

    $ perl -E 'say $ENV{LANG}'
    en_US.UTF-8
    
    1. ${PATH}只不过是一种更详细的说法$PATH${...}构造(及其堂兄,@{...}%{...})最常用于双引号字符串内插,以强制Perl识别{{1}的全部内容}作为变量名而不是较短的名称后跟文字文本,但语法也可用于其他上下文。
    2. 简单示范:

      {...}

答案 2 :(得分:1)

使用$ ENV是perl中的预定义变量格式

print $ENV{PATH};