my $a = qr{ [ .(] }xms; my $b = qr{ abc | abc_p }xms; while (my $line = <$fh>) { if ($line =~ m{ $a $b }xms) { for my $i (1 .. 2) { (my $c = $line) =~ s{ ($a $b) }{${1}_$i}xmsg; print $out $c; } } } else { print $out $line; } }