my %replace = ( abc => 1, def => 2, ... ); my $re = join '|', keys %replace; $string =~ s/%\$($re)%/$replace{ $1 }/g;