in reply to Re: Re: Re: $1 in variable regex replacement string
in thread $1 in variable regex replacement string
Presumably you want to do something like this example. You would not want stuff passed in $repl like$repl = q/";`arbitrary_command`;$whoops="/ because that will run an arbitrary command unless you are careful. So the answer is you can do it but you probably should not. That said we can sanitise $repl with the substitution shown. Comment it out and uncomment the hack to see the problem.
my $str = 'abcadefaghi'; my $pat = '(a.)'; my $repl = '$1 '; #$repl = q/";`arbitrary_command`;$whoops="/; $str = munge_string($str, $pat, $repl); sub munge_string { my ( $str, $pat, $repl ) = @_; # make $repl safe to eval $repl =~ s/([^A-Za-z0-9\$])/\\$1/g; $repl = '"' . $repl . '"'; $str =~ s/$pat/$repl/eeg; return $str; } print "$str\n";
I just don't see the point. If it is your API you are just digging a big hole for yourself I reckon. If you could outline the problem space it would be easier to suggest other methods. It seems you want to abstract the regex from the core code. This seems like it might be a case of one level of abstraction too many.
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|
---|