我有一些 Perl 代码正在做一些我无法弄清楚的奇怪事情。我在这部分代码之前定义了两个变量:
$latestPatch = '000';
$test_setup{appl}{Rev0_OK} = 'F'; # a hash element
两者都定义为字符串。如果我打印出原始变量(将 ' 包裹在它们周围),'int($latestPatch)'
is'0'
和'$test_setup{appl}{Rev0_OK}'
is 'F'
。到目前为止,正如预期的那样。现在我运行以下命令:
$shouldInstall = int($latestPatch) == 0 &&
$test_setup{appl}{Rev0_OK} eq 'T';
$shouldInstall
以空值结束(预期为 false/0)!(打印'$shouldInstall'
给出'')。逐步调试语句(未显示)表明int($latestPatch) == 0
工作正常,给出 1 (TRUE),但$test_setup{appl}{Rev0_OK} eq 'T'
为 null ''(因此$shouldInstall
为 '')。如果我将测试更改为$test_setup{appl}{Rev0_OK} eq 'F'
,则为 1 (TRUE)。如果我将测试更改为$test_setup{appl}{Rev0_OK} ne 'F'
,它再次为空。这里发生了什么?没有发出错误消息。我确实定义了布尔变量 TRUE 和 FALSE(如 int 1 和 0)。
ATDHVANNKcSe