数组 – 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都是自动完成的.移除了|| = []的相同代码更清楚地做了同样的事情. 但是,有时候做这样的事情确实有意义,所以值得记住这个模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |