my $n = 10; # , say my @lines; { local $_; while () { push @lines, $_; if (/c9391b56-b174-441b-921c-7d63/) { # push @lines, ()[0..$n-1] and last; # better, while () { push @lines, $_; last if @lines > 2*$n; } last; } else { shift @lines while @lines > $n; } } }