我有一个像下面这样的文件,其中以数字开头的行是我的样本的 ID,以下行是数据。
10001;02/07/98;;PI;M^12/12/59^F^^SP^09/12/55
;;;;;M1|F1|SP1;9;9;9;9;9;9;;D16S539
;;;;;M1|F1|SP1;9;9;9;9;9;9;;D7S820
;;;;;M1|F1|SP1;9;9;9;9;9;9;;D13S317
;;;;;M1|F1|SP1;9;9;9;9;9;9;;D5S818
10002;02/07/98;;RJ;F^20/04/86^SP^
;;;;;F1|SP1;;;12;10;12;11;;D10S212
;;;;;F1|SP1;;;8;8;10;8;;D7S820
;;;;;F1|SP1;;;12;11;14;11;;D13S317
;;;;;F1|SP1;;;13;12;13;8;;D5S818
对于包含数据的行,我想测试字段 6-11 是否相同,因为只有当它们不相等时我才想要数据(在第一种情况下,它们都是“9”)。
于是我想到了将行拆分并存储为数组,然后用 ~~ 运算符比较数组。但是,如果我在 while 循环中读取文件并且每行都重新定义了数组,我该怎么做呢?或者也许有更好的方法来做到这一点。
提前致谢!
这是一个伪代码来说明我想要做什么:
open FILE, $ARGV[0] or die $!;
while (<FILE>) {
chomp;
my @field = split /;/;
if ($field[0] eq '') {
if @fields[6 .. 11] is not equal to @fields[6 .. 11] in all the next lines {
do my calculation;
}
}
}