use warnings; use strict; my $bol_priority = qr{ \A priority }xms; # 'priority' begins a line my $blank_line = qr{ \A \s* \z }xms; my $saw_priority = ''; while () { s{ $bol_priority }{bandwidth}xms if $saw_priority; $saw_priority = /$bol_priority/ .. /$blank_line/; print; } __DATA__ Class control priority 5 Class voip priority 30 Class video priority 40 Class control priority 10 Class voip priority 25 Class video priority 45 #### Class control priority 5 Class voip bandwidth 30 Class video bandwidth 40 Class control priority 10 Class voip bandwidth 25 Class video bandwidth 45