在perl脚本中使用环境变量

时间:2014-09-25 11:17:07

标签: perl shell variables environment

我正在运行一个执行shell命令的perl脚本:

system ("bsub xyz +OPTIONS_GATE=$GATE")

此处$GATE是我的环境变量。当我执行脚本时。它给出了错误

"No arguments supplied for option group OPTIONS_GATE instance". 

如何处理这个问题。提前致谢

1 个答案:

答案 0 :(得分:8)

双引号字符串中的

$GATE将被视为Perl变量。如果要使用环境变量,可以使用%ENV哈希:

system ("bsub xyz +OPTIONS_GATE=$ENV{GATE}")

或者,您可以转义美元符号,以便Perl不会将$GATE视为Perl变量:

system ("bsub xyz +OPTIONS_GATE=\$GATE")

或者使用单引号字符串,它不插入变量:

system ('bsub xyz +OPTIONS_GATE=$GATE')

请注意,如果您使用过

use strict;
use warnings;

它会告诉你这个错误。 strict会说:

Global symbol "$GATE" requires explicit package name
Execution of script.pl aborted due to compilation errors.

warnings会说:

Name "main::GATE" used only once: possible typo at script.pl line 12.
Use of uninitialized value $GATE in string at script.pl line 12.

当您不使用use strict; use warnings;时,您的错误不会被删除,它们只对您隐藏,因此很难找到它们。因此,请始终使用这两个pragma。