#!perl -pi~ my $p; my $done_replacement = 0; while (<>) { if (/^A (.*) B$/) { $p = $1; } elsif (defined $p && !$done-replacement) { s/^(C .*)$p$/$1 Q/; $done_replacement = 1; } }