use strict; use warnings; my $flag = 0; while () { if (/^A id/) { print; $flag = 1; } print if $flag and /^M/ } __DATA__ A class 1 1 1 1 1 1 A id 12 12 15 15 16 16 B class 0 0 0 0 0 0 B id 0 0 0 0 0 0 0 C id 0 0 0 0 0 0 0 M X1 1 2 2 2 2 2 M X2 2 1 1 1 1 1 M X3 1 2 2 2 2 2 M X4 2 2 2 1 1 2 M X5 1 1 1 1 1 1 M X6 1 1 1 2 2 1 M X7 1 1 1 1 1 1 M X8 1 1 1 1 1 1 M X9 1 1 1 1 1 1 M X10 1 1 1 1 1 1 M X11 1 2 1 1 1 1 M X12 2 2 2 2 2 2 M X13 2 1 2 2 2 2 M X14 2 1 2 2 2 2 M X15 1 2 1 1 1 1 M X16 1 1 2 2 2 2 M X17 1 2 2 2 2 2 #### use strict; use warnings; while () { next if /^A id/; my ($x, $c1, $c2, @cols) = (split)[1..7]; print "$x: col 12, 1st: $c1\n"; for my $col (@cols) { if ($c1 == $col) { print " matches\n"; } else { print " does not match\n"; } } print "$x: col 12, 2nd: $c2\n"; for my $col (@cols) { if ($c2 == $col) { print " matches\n"; } else { print " does not match\n"; } } } __DATA__ A id 12 12 15 15 16 16 M X1 1 2 2 2 2 2 M X2 2 1 1 1 1 1 M X3 1 2 2 2 2 2 M X4 2 2 2 1 1 2 #### X1: col 12, 1st: 1 does not match does not match does not match does not match X1: col 12, 2nd: 2 matches matches matches matches X2: col 12, 1st: 2 does not match does not match does not match does not match X2: col 12, 2nd: 1 matches matches matches matches X3: col 12, 1st: 1 does not match does not match does not match does not match X3: col 12, 2nd: 2 matches matches matches matches X4: col 12, 1st: 2 matches does not match does not match matches X4: col 12, 2nd: 2 matches does not match does not match matches