V.Ramkumar wrote: > Hi, > > Any one suggest me, what is the error in my below code, Not any error when > run, But unable to get the search value in replacement. > > $content=~s/<$allelm/"<\1 xml:id=".$idseq++/egsi; > > Here $allelm contains element list, (para|quote|list). > > I am getting output as a junk for \1.
perldoc perlre says this > 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///". Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/