#!/usr/bin/perl use warnings; use strict; my %replace = (name => 'Joe', fun => 'a game'); my $search_for = join '|', map quotemeta, keys %replace; while () { s/\$($search_for)/$replace{$1}/g; print; }