[求助]while读入数据,操作取舍问题!Thank you advance!

[求助]while读入数据,操作取舍问题!Thank you advance!

假定文件名为datafile的内容如下:

2008-12-14
N0.1 group
A             B        C          D
37898..39115        -        405        16128032         
39244..40386        -        380        16128033         
40417..41931        -        504        16128034         
42403..43173        +        256        90111081       
45463..45750        +        95        16128038         
45807..47138        +        443        16128039         
47246..47776        +        176        16128040         
部分程序为
my $file='datafile';
open (FH,$file) ||die "Cannot open $file,$!";

while (<FH>)
{
if ($_=~//)
@data=split(/\s/,$_);
my @A= split(/\.\./,$data[0]);
my $B= $data[1];
my $C= $data[2];
my $D= $data[3];
......................
.....................
}
如何做到不对前三行操作,即不管
2008-12-14
N0.1 group
A             B        C          D
这三行。
请高手支招,谢谢!


QUOTE:
原帖由 bmechuangye 于 2008-12-14 22:16 发表
如何做到不对前三行操作,

在 while (<FH>) 之前写 <FH>; <FH>; <FH>; 或 <FH> for (1..3);


[Copy to clipboard] [ - ]
CODE:
while (<FH>)
{
next if $. < 4; #跳过前三行
.
.
.
}

你在处理前把文件打开,把前三行删了不就完了。
$. 这个变量使用起来还是要注意下。
非常感谢MMMIX和hitsubunnu的指点,你们真是高手!向高手学习!


QUOTE:
原帖由 MMMIX 于 2008-12-15 09:36 发表
$. 这个变量使用起来还是要注意下。

能详细说一下 注意哪些方面吗?
既然所有数据的格式相同,直接提取就可以了。

37898..39115        -        405        16128032

[Copy to clipboard] [ - ]
CODE:
while (<FH>) {
    if (/^(\d+)\.{2}(\d+)\s+([-|+])\s+(\d+)\s+(\d+)/) {
        $A1 = $1;
        $A2 = $2;
        $B = $3;
        $C = $4;
        $D = $5;
    }
}

完全不需要理会前 3 行。



QUOTE:
原帖由 MMMIX 于 2008-12-15 09:36 发表
$. 这个变量使用起来还是要注意下。

请问MMMIX,您指的要注意哪些问题,能否告知一下,谢谢!


QUOTE:
如果你在从多个文件句柄中读数据,那么“$.”变量保存了最近读过的文件句柄中的当前记录号。

MMMIX 你说的是注意这个吗?