Perl:import shell变量

时间:2015-06-16 11:08:27

标签: perl shell environment-variables csh

在shell中,我有源.cshrc文件,其中包含一些已定义的变量,如用户名。

我需要将这些变量传递给某个Perl脚本。

例如在shell终端中,我输入了

>echo $user

输出为>esaad

然后在Perl中,为了阅读$user变量,我尝试了:

system("echo $user")

还尝试了这个命令:

my $userName = system( echo $ENV{user} );

但是Perl要求$user初始化为Perl变量而不是Shell 1。

我怎么能读到这个变量?

2 个答案:

答案 0 :(得分:4)

你可以:

print $ENV{'user'}

系统调用不起作用的原因是系统打开了一个不会提供.cshrc的新shell 阅读this答案以获取更多信息

答案 1 :(得分:0)

使用Perl内置系统变量$ ENV:

print $ENV{'user'}

或者使用反斜杠来转义变量$ user。 Perl将解释Perl程序中定义的$ user变量而不使用反斜杠。使用反斜杠,“echo $ user”作为系统调用传递。

system("echo \$user")