理解できない奇妙なことをしている Perl コードがいくつかあります。このコード セクションの前に、次の 2 つの変数を定義しています。
$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
最終的に null 値になります (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'
、再び null になります。何が起きてる?発行されるエラー メッセージはありません。ブール変数 TRUE と FALSE を (int 1 と 0 として) 定義しています。
アドバナンクセ