演算子とor演算子は、共に論理和演算子なのですが、演算子の優先順位が違います。 ちなみに、論理和演算子とは、左側を評価して真であれば、右側を評価せずに結果を返します。 以下のように||演算子とor演算子の優先順位の間には『=』や『,』等があるわけです。 || = += -= *= などの代入演算子 , => or xor つまり、1ステップ中に||演算子と『=』や『,』等の組み合わせがある場合と、 or演算子と『=』や『,』等の組み合わせがある場合では、振る舞いが異なることになるのです。 たとえば、以下の場合では、『or』はOKなのですが、『||』はNGなのです。 open FH, ">ABC.txt" or die "open error $!"; # OK open FH, ">ABC.txt" || die "open error $!"; # NG NGケースでは、『,』より『||