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