Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^3: Regex error when [] occurs in file.. ($1 vs. \1)

by almut (Canon)
on Mar 03, 2008 at 16:31 UTC ( [id://671674]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Regex error when [] occurs in file..
in thread Regex error when [] occurs in file..

$temp =~ m/(\[0-9\])blah$1/;

I think you meant

$temp =~ m/(\[0-9\])blah\1/;

in which case any special characters in the content of the backreference \1 would not be treated special. IOW, "[0-9]blah[0-9]" would match, but not "[0-9]blah6":

#!/usr/bin/perl use strict; use warnings; for my $temp ("[0-9]blah[0-9]", "[0-9]blah6") { printf "%-15s ", $temp; if ($temp =~ /(\[0-9\])blah\1/) { print "matched\n"; } else { print "didn't match\n"; } }

prints

[0-9]blah[0-9] matched [0-9]blah6 didn't match

while, if you replace \1 with $1 in the above regex, it prints

Use of uninitialized value in concatenation (.) or string at ./671663. +pl line 8. [0-9]blah[0-9] matched [0-9]blah6 matched

This is because $1 isn't defined here, thus the regex effectively becomes /(\[0-9\])blah/...

Update: added demo code.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://671674]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2024-04-25 09:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found