This question already has answers here:
How do I check if a Perl scalar variable has been initialized?

(5 个回答)


7年前关闭。




我一直在使用
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)

关于Perl:检查是否设置了环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18006108/

10-13 04:59