use v5.18; use warnings; use autodie; my @replace = (qw/vss vdd/); open(my $in,'<','input.txt'); my @lines = <$in>; close $in; LOOP: for my $word (@replace) { my $start = -1; for my $i (0..$#lines) { if ($start == -1) { next unless $lines[$i] =~ /Power\s+information\s+for\s+$word\s+/; $start = $i; } else { next unless $lines[$i] =~ /}/; splice @lines,$start,$i - $start + 1; redo LOOP; } } } say @lines; # save @lines to temporary file name # rename input.txt to backup.txt # rename temporary file to input.txt