Perl: 导入 shell 变量

Perl: import shell variable

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

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

例如在shell终端,我输入了

>echo $user

输出为>esaad

然后在 Perl 中读取 $user 变量,我试过:

system("echo $user")

也试过这个命令:

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

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

我如何读取这个变量?

您可以:

print $ENV{'user'}

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

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

print $ENV{'user'}

或者使用反斜杠转义变量$user。 Perl 将解释在 Perl 程序中定义的没有反斜杠的 $user 变量。使用反斜杠,"echo $user" 作为系统调用传递。

system("echo $user")