use strict; my $str = "the boy walked the dog"; $str=ChainSubs($str, walked=>'fed', boy=>'girl', dog=>'Audrey II' ); print $str; sub ChainSubs{ my ($string,%subs)=@_; foreach my $original (keys %subs) { $string=~s/$original/$subs{$original}/; } $string; }