以下のようなファイルがあります。数字で始まる行はサンプルの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;
}
}
}