MEL のコードを作成する場合によく問題になるのが、表記が似た演算子を混同してしまうことです。
これら 2 つの演算子を混同すると、MEL スクリプトに非常に見つけにくいバグが生じる原因となります。
変数 $a の値が 10 に等しい場合に、メッセージを出力することを考えてください。次の文を試すと:
if ($a = 10) { print "equal to 10!"; }
このスクリプトは、必ず「equal to 10!」を出力することがわかります。これは、このスクリプトでは誤って等号が 1 つ(代入演算子)しか使用されていないため、「test」で実際には $a に 10 が割り当てられているからです。割り当ては割り当てられた値、この場合は 10 に評価されます。0 以外の値はいずれも true とみなされるため、この条件は必ず true になります。
この場合、正しいコードは次のようになります。
if ($a == 10) { print "equal to 10!"; }
(= ではなく、== を使用します。)
条件文で代入を使用することは、状況によっては便利で手っ取り早い方法になりますが、あまり慣れていない場合は = と == の混同に十二分に注意してください。