我试图理解一段循环文件的代码,进行各种分配,然后输入一组if语句,其中字符串似乎与什么都没有比较。与/nonsynonymous/
和/prematureStop/
进行比较的内容是什么?我对python很有经验。
open(IN,$file);
while(<IN>){
chomp $_;
my @tmp = split /\t+/,$_;
my $id = join("\t",$tmp[0],$tmp[1]-1);
$id =~ s/chr//;
my @info_field = split /;/,$tmp[2];
my $vat = $info_field[$#info_field];
my $score = 0;
$self -> {VAT} ->{$id}= $vat;
$self ->{GENE} -> {$id} = $tmp[3];
if (/nonsynonymous/ || /prematureStop/){...
答案 0 :(得分:6)
它与当前输入行($ _)进行比较。
默认情况下,perl将在执行正则表达式匹配时自动使用当前输入行($ _),除非被覆盖(使用=〜)。
答案 1 :(得分:4)
来自http://perldoc.perl.org/perlretut.html
如果你匹配特殊的默认变量$ _,那么$ _ =〜 部分可以省略:
$_ = "Hello World";
if (/World/) {
print "It matches\n";
}
else {
print "It doesn't match\n";
}
答案 2 :(得分:3)
通常在Perl中,如果未给出特定变量,则假定您要使用默认变量$_
。例如,while循环将来自<IN>
的传入行分配给该变量,chomp $_;
也可以写成chomp;
,并且if语句中的正则表达式尝试匹配$_
也是如此。