in reply to Regex prob with interpolated patterns

Backslash-backreferences aren't cricket in the replacement portion of s///. You would want '$1bar', and then you'd need to use the /ee flag to get it to eval properly: once to turn $bar into $1foo and once to sub for $1. But $1foo isn't a proper expression, you need to put a . to concatenate them, or double-quotes around it:
$replace = '$1.bar'; # or '"$1bar"' s/$find/$replace/eeg;
Update: It might be more secure to put the quotes in the s/// expression itself:
$replace = 'warn "AARGH!"'; s/$find/qq(qq($replace))/eeg;

The PerlMonk tr/// Advocate