--- david <[EMAIL PROTECTED]> wrote:
> Paul wrote:
> > By the way, Harry -- don't use \1. Use $1.
> > The backslashed version is only there for backwards compatibility,
> > and I think it's deprecated.
>
> depends on how you use it, it's probably not just for backwards
> compatibility:
> #!/usr/bin/perl -w
> use strict;
> my $string = '9999abcd9999';
> if($string =~ /^(\d+)abcd\1/){
> print "matched\n";
> }
> __END__
> prints:
> matched
>From 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///".
Doesn't say it's deprecated, though.
Still, is there ever a time $1 won't work?
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]