in reply to search replace (interpolation)

It looks like what you're trying to do is use a variable name as a variable name - that's a security no-no.

If you want the values in the hash, why not put them there directly, such as:

$userInfo{fname} = 'John'; $userInfo{lname} = 'Doe'; $userInfo{email} = "$userInfo{fname} $userInfo{lname} <john@doe.com>";

Without knowing more about why you're putting these values into the hash it's hard to give you any better advice.

Update: Fixed the code so it'll actually work -- $userInfo{fname} != $fname