理解できない奇妙なことをしている 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 として) 定義しています。
アドバナンクセ