这个if语句有什么作用? (字符串比较)

时间:2013-12-09 20:50:19

标签: perl

我试图理解一段循环文件的代码,进行各种分配,然后输入一组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/){...

3 个答案:

答案 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语句中的正则表达式尝试匹配$_也是如此。