我一直在用
if(exists $ENV{VARIABLE_NAME} && defined $ENV{VARIABLE_NAME})
在我的 Perl 脚本的几个地方。
我觉得它使代码变得混乱,因此将其值分配给了一个变量。
$debug = $ENV{VARIABLE_NAME};
但是,现在我无法检查标量值上的
exists
。有没有办法检查标量值是否存在?
标量没有
exists
的概念;对于哈希,它告诉您给定的键是否出现在哈希中(例如,keys %ENV
是否包含它),但这对于标量来说毫无意义。
但在环境变量的特定情况下,无论如何你都不需要
exists
测试:环境变量始终是字符串,因此它们永远不会 undef
除非它们尚未设置 - 使得 exists
相当于对他们来说defined
。所以你可以写 if(defined $ENV{'VARIABLE_NAME'})
或 if(defined $debug)
。
你是对的,
exists
对于标量变量来说毫无意义。但你就不能写if(defined $ENV{VARIABLE_NAME})
吗?如果不存在则 $ENV{VARIABLE_NAME}
将返回 undef
。