in reply to Is it possible to insert a record after line 5 that appears on line 10?
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;
Or a version that doesn't start buffering before it needs to:
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;
Both handle all of these according to the given specs:
:16R:SECMOVE :17B: :35B: :16R:SECMOVE :17B: :35B: :35B: :16R:SECMOVE :35B: :17B: :35B: :17B: :16R:SECMOVE :35B:
Untested.
Update: Simplified.
|
---|