perl - 无法访问 perl 脚本中的 shell 变量,除非它是环境变量

标签 perl

我需要访问 Perl 脚本中 shell 变量的值。如果它是一个环境变量而不是常规的 ole shell 变量,我可以获取它。考虑一下

% set AAA=Avalue
% setenv BBB=Bvalue
% echo $AAA
Avalue
% echo $BBB
Bvalue

到目前为止,一切都很好。现在,这是一个用于读取它们的 perl 脚本...

#!/usr/bin/env perl
use strict;

print "AAA: ".$ENV{AAA}."\n";
print "BBB: ".$ENV{BBB}."\n";

exit;

当我运行它时,我得到...

AAA:
BBB: Bvalue

如何从 perl 脚本内部获取 AAA 的值?

提前致谢

最佳答案

您没有获得 AAA 变量的值,因为 AAA 是本地环境变量,而 BBB 是导出变量。

导出的变量被导出到由导出它们的 shell 启动的进程的环境中,而非导出的变量仅是当前进程的本地变量。

示例:

$ set AAA=123
$ csh
$ echo $AAA
AAA: Undefined variable.
$ exit

$ setenv BBB 456
$ csh
$ echo $BBB
456

关于perl - 无法访问 perl 脚本中的 shell 变量,除非它是环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652592/

相关文章:

java - 客户端渲染 JSON 与 GPB( Protocol Buffer )

perl - "standard"和 block 包声明有什么区别吗?

linux - 从 perl 守护进程中的信号处理程序返回一个值

regex - 命名捕获组中的顺序

perl - 如何理解POEM-To destroy的使用?

perl - 如何在 sqlite3 和 perl 中创建唯一索引?

regex - 不匹配 [ 在正则表达式中,尽管被转义

linux - 通过与第一列进行比较,从文本文件的行中删除所有重复的单词

perl - 这里是否调用了dl_load_file?

multithreading - 如何在不杀死整个程序的情况下立即杀死 Perl 线程?