in reply to Re^2: Problem with Pattern matching and substitution using variables
in thread Problem with Pattern matching and substitution using variables

As documented in s/PATTERN/REPLACEMENT/msixpodualgcer in perlop:
Otherwise, if the PATTERN contains a $ that looks like a variable rather than an end-of-string test, the variable will be interpolated into the pattern at run-time.
...
e Evaluate the right side as an expression.
ee Evaluate the right side as a string then eval the result.
Essentially, with no switch, the variable is interpolated following qq rules. With one e, the value between the slashes is evaluated; all that lies between the slashes is the scalar, so it evaluates equivalently. With two es, the scalar is evaluated into the string value, and then that string value is passed through eval.

Replies are listed 'Best First'.
Re^4: Problem with Pattern matching and substitution using variables
by shtihskar (Initiate) on Sep 12, 2011 at 08:27 UTC

    Thank you. That solved the issue. Following is the code i am using.

    my $data = '#define MANUFACTURER "xyz"'; my $replace = '#define MANUFACTURER(\s+)"xyz"'; my $replace_with = '#define MANUFACTURER$1"abcd"'; my $tmp_str = '$data =~ s/$replace/'.$replace_with.'/g'; eval $tmp_str; print "\n",$data;

    Note: The code takes the same approach as kennethk suggested, except that i didn't want the extra qoutes (and escaping of quotes) in $replace_with variable.