7 points
*
Perl has both $a || $b
and $a // $b
.
The ||
version is older and has the value of if
is any false value including
undef
(which is pretty much Perl’s null
/nil
).
The //
version has the value of iff
is
undef
. Other “false” values carry through.
Ruby took both “no return
required” and “no final semicolon required” from Perl (if not a few other things), I think, but it seems that //
was Perl later borrowing Ruby’s ||
semantics. Interesting.
i.e. 0 || 1
is 1
in Perl but 0
in Ruby. Perl can 0 // 1
instead if the 0
, which is a defined value, needs to pass through.