in reply to Re: Re: Re: question on sed
in thread question on sed
Unless you're building the patterns in strings to be eval'd, you don't need to escape the slashes.
In the original example, a sed command was being built, so $b and $c were interpolated by the shell or before the shell saw it, not by sed. Thus, the first thing sed sees has already been interpolated, which causes problems if the $b and $c had the separators in them.
Your example in Perl should be fine, even if the $b and $c had slashes in them. The qq-like interpolations of the pattern and replacement arguments are done after the compiler has already parsed the s/// operator and gathered the arguments.
It's still a good idea to escape things in the patterns, s/\Q$b/$c/ or $b = quotemeta $b, but that's to avoid problems with regex special characters, not the separators in the s/// operator.
% perl $raw = 'this/is/a/test'; $b = 'is/a'; $c = 'was/a'; $raw =~ s/$b/$c/g; print $raw, $/; # this/was/a/test
--
[ e d @ h a l l e y . c c ]
|
|---|