my $seen_16r_secmove = 0; my $seen_17b = 0; my @buf; while (<>) { if (/^:17B:/) { $seen_17b = 1; print @buf; @buf = $_; } elsif ($seen_16r_secmove && $seen_17b && /^:35B:/) { print; } else { $seen_16r_secmove = 1 if /^:16R:SECMOVE$/; push @buf, $_; } } print @buf; #### my $seen_16r_secmove = 0; my $seen_17b = 0; my @buf; while (<>) { if (/^:17B:/) { $seen_17b = 1; print @buf; @buf = $_; next; } $active = 1 if /^:16R:SECMOVE$/; if (!$seen_17b || $seen_16r_secmove && /^:35B:/) { print; } else { push @buf, $_; } } print @buf; #### :16R:SECMOVE :17B: :35B: :16R:SECMOVE :17B: :35B: :35B: :16R:SECMOVE :35B: :17B: :35B: :17B: :16R:SECMOVE :35B: