What is the difference between \1 and $1 in a Perl regex?
perl, regex
Solution
Straight from perldoc perlre:
Warning on \1 vs $1
Some people get too used to writing things like:
$pattern =~ s/(\W)/\\\1/g;
This is grandfathered for the RHS of a substitute to avoid shocking the sed addicts, but it’s a dirty habit to get into. That’s because in PerlThink, the righthand side of an "s///" is a double- quoted string. "\1" in the usual double-quoted string means a control-A. The customary Unix meaning of "\1" is kludged in for "s///". However, if you get into the habit of doing that, you get yourself into trouble if you then add an "/e" modifier.
s/(\d+)/ \1 + 1 /eg; # causes warning under -w
Or if you try to do
s/(\d+)/\1000/;
You can’t disambiguate that by saying "{1}000", whereas you can fix it with "${1}000". The operation of interpolation should not be confused with the operation of matching a backreference.
Certainly they mean two different things on the left side of the "s///".
Problem
What is the difference of doing \1 as opposed to $1 if any, or are they interchangeable in all situations. Example: ``` s/([a-z]+),afklol/$1,bck/; #against s/([a-z]+),afklol/\1,bck/; ``` They both give the same result but is there any difference?