4

我一直在使用

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

我觉得它使代码混乱,因此将其值分配给了一个变量。

$debug = $ENV{VARIABLE_NAME};

但是,现在我无法检查exists标量值。有没有办法检查是否存在标量值?

4

2 回答 2

19

没有exists标量的概念;对于散列,它告诉您给定键是否出现在散列中(例如,是否keys %ENV将包含它),但这对于标量没有意义。

但是在环境变量的特定情况下,无论如何您都不需要exists测试:环境变量始终是字符串,因此undef除非尚未设置它们,否则它们永远不会是 -对它们exists等效defined。所以你可以只写if(defined $ENV{'VARIABLE_NAME'})or if(defined $debug)

于 2013-08-01T23:14:13.740 回答
7

没错,这exists对于标量变量毫无意义。但是你就不能写if(defined $ENV{VARIABLE_NAME})吗?如果它不存在,那么$ENV{VARIABLE_NAME}将返回undef

于 2013-08-01T23:13:46.317 回答