use warnings; use strict; while () { s/(Z=)(\d+)/$1 . $2*4/eg; my $i = 1; s/\b(XP)\b/$1 . ' (' . $i++ . ')'/eg; print; } __DATA__ Z=1 Z=2 Z=3 foo XP bar XP boo