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

前端之家收集整理的这篇文章主要介绍了数组 – perl中的|| = []是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下数组@ {$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都是自动完成的.移除了|| = []的相同代码更清楚地做了同样的事情.

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

猜你在找的Perl相关文章