while(){ my %seen; s/(%(?:EX|BC|EC)%)/$seen{$1}++ ? $1 : "TOdelete" /ge; print $_; }