my @queue; # prime @queue with first line of data push @queue, scalar ; while () { push @queue, $_; if (/your condition/) { # edit line in $queue[0] } print shift @queue; } # print remaining queue print @queue;