% say "@x= @x || 2..4" 2 3 4 % say "@x ||= 2..4" Can't modify array dereference in logical or assignment (||=)... % say { my $x; sub f:lvalue { $x += shift @_; return $x } } f(2) ||= 3, f(10) __END__ 2 12 % say { my $x; sub f:lvalue { $x += shift @_; return $x } } f(2)= f(2) || 3, f(10) __END__ 2 14