in reply to
Replacing multiple words in a regex
tr/// is strictly for character-to-character transliteration. You want substitution.
%change = qw( green yellow blue red );
my $rx =
join '|', # alternation
map { quotemeta } # make it a safe string
sort { length($b) <=> length($a) }
# so that 'broken' matches before 'broke'
keys %change;
$str =~ s/($rx)/$change{$1}/g;
This is a common idiom.
_____________________________________________________
Jeff[japhy]Pinyan:
Perl,
regex,
and perl
hacker.
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;