use strict; use warnings; my %cats = ( blackcat=>5, whitecat=>10,orangecat=>20 ); my $texttosub = 'log10(blackcat)*whitecat*(log10(orangeCat))'; $texttosub =~ s/\b(?!log10)([a-zA-Z][A-Za-z_0-9]+)\b/$cats{lc $1}/ige; print "$texttosub\n";