检查 Perl 中是否设置了环境变量[重复]

问题描述 投票:0回答:2

我一直在用

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

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

$debug = $ENV{VARIABLE_NAME};

但是,现在我无法检查标量值上的

exists
。有没有办法检查标量值是否存在?

perl exists
2个回答
20
投票

标量没有

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

但在环境变量的特定情况下,无论如何你都不需要

exists
测试:环境变量始终是字符串,因此它们永远不会
undef
除非它们尚未设置 - 使得
exists
相当于对他们来说
defined
。所以你可以写
if(defined $ENV{'VARIABLE_NAME'})
if(defined $debug)


7
投票

你是对的,

exists
对于标量变量来说毫无意义。但你就不能写
if(defined $ENV{VARIABLE_NAME})
吗?如果不存在则
$ENV{VARIABLE_NAME}
将返回
undef

© www.soinside.com 2019 - 2024. All rights reserved.