在论坛上瞅见别人用“//=”操作符,非常的糊涂,查了一下。
关于“//=”操作符:
C-style Logical Defined-Or
Although it has no direct equivalent in C, Perl's "//" operator is
related to its C-style or. In fact, it's exactly the same as "||",
except that it tests the left hand side's definedness instead of its
truth. Thus, "$a // $b" is similar to "defined($a) || $b" (except that
it returns the value of $a rather than the value of "defined($a)") and
yields the same result as "defined($a) ? $a : $b" (except that the
ternary-operator form can be used as a lvalue, while "$a // $b"
cannot). This is very useful for providing default values for
variables. If you actually want to test if at least one of $a and $b
is defined, use "defined($a // $b)".
The "||", "//" and "&&" operators return the last value evaluated
(unlike C's "||" and "&&", which return 0 or 1). Thus, a reasonably
portable way to find out the home directory might be:
$home = $ENV{HOME}
// $ENV{LOGDIR}
// (getpwuid($<))[7]
// die "You're homeless!\n";