【问题标题】:Can we set a variable used in a Perl script as environment variable?我们可以将 Perl 脚本中使用的变量设置为环境变量吗?
【发布时间】:2012-09-06 12:49:43
【问题描述】:

我有一个 Perl 脚本,它有一个像 my $name 这样的变量。我们可以将 $name 的内容设置为环境变量,我们可以在其他文件中导入和使用吗?

我试过$ENV{NAME}=name,但这不起作用。

【问题讨论】:

  • 您想在其他文件中使用$name 的值吗?或者你想将环境变量的值设置为$name
  • 我想设置新的环境变量,比如 x,它的值应该等于 $name
  • 如果是这种情况,$ENV{NAME}=name 应该可以工作,除非在 perl 中引用 var name 使用 $name。查看 sarathi 的回复了解更多信息。

标签: linux perl bash unix


【解决方案1】:

如果你想影响你的进程或你的子进程的环境,只需使用%ENV hash:

$ENV{CVSROOT}='<cvs>';

如果你想影响你的父进程的环境,你不能。至少不是没有父进程的合作。标准流程是发出一个 shell 脚本并让父进程执行该 shell 脚本:

#!/usr/bin/perl -w
print 'export CVSROOT=<cvs>';

...并从外壳(脚本)调用该脚本:

eval `myscript.pl`

【讨论】:

    【解决方案2】:

    环境变量是特定于进程的。当子进程生成时,它会继承其父环境变量的副本,但它对它们所做的任何更改都仅限于它自己以及它在更改后生成的任何子进程。

    所以不,您不能在您运行的脚本中为您的 shell 设置环境变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2021-10-30
      • 2021-06-17
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      相关资源
      最近更新 更多