加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – perl中的|| = []是什么?

发布时间:2020-12-16 06:10:17 所属栏目:大数据 来源:网络整理
导读:以下数组@ {$violated {$desc} || = []}在下面的子程序中意味着什么? 据我所知,@ {$violated {$desc}}是$violated {$desc}引用的匿名数组. sub not_in_file_ok { my ($filename,%regex) = @_; open( my $fh,'',$filename ) or die "couldn't open $filename
以下数组@ {$violated {$desc} || = []}在下面的子程序中意味着什么?
据我所知,@ {$violated {$desc}}是$violated {$desc}引用的匿名数组.

sub not_in_file_ok {
    my ($filename,%regex) = @_;
    open( my $fh,'<',$filename ) or die "couldn't open $filename for reading: $!";
    my %violated;
    while (my $line = <$fh>) {
        while (my ($desc,$regex) = each %regex) {
            if ($line =~ $regex) {
                push @{$violated{$desc}||=[]},$.;
            }
        }
    }
    if (%violated) {
    fail("$filename contains boilerplate text");
    diag "$_ appears on lines @{$violated{$_}}" for keys %violated;
    } else {
    pass("$filename contains no boilerplate text");
    }
}

解决方法

这是一个 compound assignment operator;如果它包含一个假值(即它尚未初始化),它会将[](对新的空数组的引用)赋给$violated {$desc}.

这也是完全没必要的,因为无论如何Perl都是自动完成的.移除了|| = []的相同代码更清楚地做了同样的事情.

但是,有时候做这样的事情确实有意义,所以值得记住这个模式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读