Peder Axensten wrote: > > I have a hash table where the keys are search patterns and the values are > the replace string, e.g.: > $my_hash{"{(.*?)}"}= '$1'; > > Futher down I use this in: > while (($find, $replace)= each (%my_hash)) { > $whatever=~ s/$find/$replace/g; > } > > The $find part works great, but $replace is problematic. It results in > either the string '$1' literally or the value of $1 when it was put into > the hash, not when the regex was executed. > > I've tried ='$1', ="$1", ="\$1" etc. and with the 'evaluate' flag with the > regex but I can't get it to work. > If you always are always replacing with the value of $1, why not use an array and do this: #this is psuedo code @find = (..array of regexes..); for $find (@find) { $whatever =~ s/$find/$1/g; } It looks like that's what you want, based on your message. Hope that helps, Geoff ===== Want to unsubscribe from this list? ===== Send mail with body "unsubscribe" to macperl-request@macperl.org