On Thu, Oct 18, 2001 at 07:00:38PM +0200, Pascal Oberndoerfer wrote:
> Hello.
> 
> I got into trouble using grouping and variables in regular expressions.
> 
> Given this scenario:
> 
>     s/search_for(but_preserve)/replace_with $1/;
> 
> I can also do:
> 
>     $pattern = 'search_for(but_preserve)';
>     $replace = 'replace_with';
>     s/$pattern/$replace $1/;
> 
> But I am unable to do:
> 
>     $pattern = 'search_for(but_preserve)';
>     $replace = 'replace_with $1';
>     s/$pattern/$replace/;
> 
> 
> It would be very helpful if I could to this as the grouping in the
> "$pattern" varies as well as the placement of the corresponding
> variables $1, $2, ...
> 
> I tried to do it with eval() -- without any success. Does eval() make
> any sense here at all?

Yes, but as /e rather than eval().

s/$pattern/qq{"$replace"}/ee;

You need two levels of eval to get the two levels of interpolation.

Ronald

Reply via email to