my $inp = <<'END'; <%= my $capi = 'foo'; $capi; %> <%= my $marega = 'bar'; $marega; %> END while($inp =~ /<%=(.*?)%>/s) { print "Dollar 1 before eval = $1\n"; $inp =~ s/<%=(.*?)%>/eval $1/es; print "INP after substitution = $inp\n"; } __END__ Dollar 1 before eval = my $capi = 'foo'; $capi; INP after substitution = foo <%= my $marega = 'bar'; $marega; %> Dollar 1 before eval = my $marega = 'bar'; $marega; INP after substitution = foo bar