http://www.perlmonks.org?node_id=470181


in reply to "or die" versus "|| die"

Both '||' and 'or' are similar. These operators allow you to perform one of the two operations, starting with the first operation on the left-hand side. If that evaluates to false, only then will right side of (||, or) will be evaluated.

In this case, if your open() fails then the program will die.

The difference comes when you use them in expressions. They have different precedence and '||' is evaluated before the 'or'. You can check perldoc perlop.