use strict; use warnings; my $item = "SeaMonkeys"; my $catNum = "SMKY-1978"; my $remainingToReplace = 2; my @lines; local $/ = "\n\n"; while (defined (my $block = )) { @lines = split "\n", $block; next unless $remainingToReplace; next unless $lines[0] =~ m/\Q$item\E/; # Replacement needed here print "***** Found $item, counter $remainingToReplace *****\n"; --$remainingToReplace; } continue { print join "\n", @lines, "\n"; } __DATA__ Data per OP's node