$row =~ s/<%\s*(\w+)\s*%>/&replace($1)/eg; sub replace {   return defined $vars{$_[0]} ? $vars{$_[0]} : ''; }