2013-12-21 102 views
-2

運營商||=在perl中做什麼?perl運算符「|| =」做什麼?

更具體,如果你有一個像代碼:

my ($my_link); 
$my_link ||= DownloadF($file,'l') if $s->{_l}; 
$my_link ||= DownloadF($file,'h') if $s->{_h}; 
$my_link ||= DownloadF($file,'o') if $s->{_o}; 

什麼||=該做的,是什麼||=和簡單=之間的區別?

+2

嘗試['的perldoc perlop'(http://perldoc.perl.org/perlop.html)下一次。 –

回答

4

Perl的支持很多賦值運算符的時候一直有問題。 ||=只是一個logical or(完成短路,)分配。

所以基本上你看的是:

if ($s->{_l}) { 
    $my_link = $my_link || DownloadF($file,'l'); 
} 

所以如果$my_link計算爲一些真正的價值則$my_link將被分配到自身(無操作本質上),否則DownloadF結果分配。通過perl的支持

其他賦值運算符:

**= += *= &= <<= &&= 
-= /= |= >>= ||= 
.= %= ^= //= 
x= 
+0

它似乎在這種情況下使用,以便每個_possible_賦值使用相同的運算符模式。 –

1

這意味着,如果$ my_link是零/沒有價值,然後分配給它=(值),這個值

如果$ my_link已經有值,那麼就沒有做任何事情

1

它僅當變量評估爲假值時才分配。 在每個示例行中,只有在條件$s->{..}爲真時纔會分配$my_link

2

如果$my_link是假(empty string, 0 or undef)DownloadF($file,'l')$my_link

此構造用來指定一個默認值(如果你想$my_link爲零)