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")
在 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")