http://www.perlmonks.org?node_id=939657


in reply to Re^7: Interpolate into replacement with s//?
in thread Interpolate into replacement with s//?

I see that but how would you quote in my last example where the replacement comes from an external source? It's not so obvious in this case ...
  • Comment on Re^8: Interpolate into replacement with s//?

Replies are listed 'Best First'.
Re^9: Interpolate into replacement with s//?
by ikegami (Patriarch) on Nov 23, 2011 at 17:26 UTC
    I wouldn't. But what do you mean, it's not obvious? To concatenate quotes to a string, use the concatenation operator (.)!
      You mean like this? This doesn't seem to work either:
      use 5.014000; use Config::General; my $conf = new Config::General({replace => 'Z\l$1Z'}); my $string = q/ABC/; my $search = qr/^(A)/; say $conf->{config}{replace}; my $replace = '"'. q/$conf->{config}{replace}/ .'"'; $string =~ s/$search/$replace/gee; say $string;
      I know your solution works when you directly give the replacement inline but not if the replacement itself is in a variable. Perhaps you could comment on how to do this in the above code?
        Check what $replace contains...
        Tip for you
        $string =~ s/$search/ warn "Lets see what we're evaling\n$replace\n\n\n"; eval $replace; /ge;