Perl:检查是否设置了环境变量

iDe*_*Dev 2 perl exists

我一直在用

if(exists $ENV{VARIABLE_NAME} && defined $ENV{VARIABLE_NAME}) 在几个地方我的perl脚本.

我觉得它使代码混乱,因此将其值赋给变量.

$debug = $ENV{VARIABLE_NAME};
Run Code Online (Sandbox Code Playgroud)

但是,现在我无法检查exists标量值.有没有办法可以检查存在标量值?

rua*_*akh 15

没有exists标量的概念; 对于哈希,它会告诉您给定键是否出现在哈希中(例如,是否keys %ENV包含它),但这对于标量来说毫无意义.

但是在环境变量的特定情况下,您无论如何都不需要exists测试:环境变量总是字符串,因此它们永远undef不会被设置 - 除非它们没有被设置 - exists等同defined于它们.所以你可以写if(defined $ENV{'VARIABLE_NAME'})if(defined $debug).


Dav*_*ipe 6

你是对的,exists对标量变量毫无意义.但你不能写if(defined $ENV{VARIABLE_NAME})吗?如果它不存在则$ENV{VARIABLE_NAME}返回undef.