perldoc perlop

在论坛上瞅见别人用“//=”操作符,非常的糊涂,查了一下。

关于“//=”操作符:

 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";

你可能感兴趣的:(//,perlop)