perl运算符“|| =”是做什么的?

时间:2013-12-21 06:23:54

标签: 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};

||=想要做什么以及||=与简单=之间有什么区别?

4 个答案:

答案 0 :(得分:4)

Perl支持许多赋值运算符。 ||=只是一个logical or(完成短路),分配。

基本上你正在看的是:

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

因此,如果$my_link评估为某个真值,那么$my_link将被分配给自己(本质上是无操作),否则会分配DownloadF的结果。

perl支持的其他赋值运算符:

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

答案 1 :(得分:2)

如果$my_link为假(empty string, 0 or undef)DownloadF($file,'l')存储到$my_link

当用于分配默认值时,此构造始终存在问题(如果您希望$my_link为零,则该怎么办)

答案 2 :(得分:1)

这意味着如果$ my_link为nil /没有值,则将该值赋值为=(value)

如果$ my_link已经有值,则它不会做任何事情

答案 3 :(得分:1)

仅在变量求值为false值时才指定。 在每个示例行中,只有在条件$my_link为真时才会分配$s->{..}