$ F [2] .. $ F [3]是什么意思?

时间:2016-05-24 14:48:20

标签: perl

我的输入文件:

1 chr19 58858171 58874214 A1BG ENSG00000121410
2 chr12 9220303 9268558 A2M ENSG00000175899
3 chr12 9381128 9386803 A2MP1 ENSG00000256069
9 chr8 18027970 18081198 NAT1 ENSG00000171428
10 chr8 18248754 18258723 NAT2 ENSG00000156006
12 chr14 95058394 95090390  ENSG00000273259
13 chr3 151531860 151546276 AADAC ENSG00000114771
14 chr2 219128851 219134893 AAMP ENSG00000127837
15 chr17 74449432 74466199 AANAT ENSG00000129673
16 chr16 70286296 70323412 AARS ENSG00000090861

我的Perl脚本:

open FH, $ARGV[0];

while (<FH>) {

    @F = split;
    $F[1] =~ /chr(\w+)/;

    $chr = $1;

    foreach ( $F[2] .. $F[3] ) {
        $hash{"$chr\t$_"} = $F[4];
    }
}

close FH;

foreach $key ( keys %hash ) {
    print "$hash{$key}\n";
}

我对这个剧本有两个问题。

  1. 为什么剧本会出现无限循环?

  2. 您能告诉我$F[2] .. $F[3]是什么意思吗?

1 个答案:

答案 0 :(得分:3)

  

为什么脚本会出现无限循环?

没有无限循环。对于提供的输入,它创建一个包含239,517个元素的哈希,然后转储哈希。输出几乎立即开始出现。

  

您能否告诉我$F[2]..$F[3]的含义是什么?

在列表上下文中,如果$F[2]$F[3]是数字,则会返回从$F[2]$F[3]的数字序列。

$ perl -E'for my $i (10..15) { say $i }'
10
11
12
13
14
15