Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: How To Remove Warnings From Regex

by Athanasius (Archbishop)
on Feb 04, 2024 at 04:22 UTC ( [id://11157515]=note: print w/replies, xml ) Need Help??


in reply to How To Remove Warnings From Regex

Hello roho,

Change $1 to \1 within the regex:

use strict; use warnings; my @txt = ('cc', 'cz'); for (@txt) { if (m/^(.)\1$/) { print "True \$_ = |$_| \$1 = |$1|\n"; } else { print "False \$_ = |$_| \$1 = |$1|\n"; } }

Output:

14:13 >perl 2092.SoPW.pl True $_ = |cc| $1 = |c| False $_ = |cz| $1 = |c| 14:14 >

As you can see:

  • warnings are gone
  • the closing $ is OK now
  • $1 is no longer the empty string on match fail, but is rather the captured character “c”.

See e.g. Capture groups.

Hope that helps,

Athanasius <°(((><contra mundum סתם עוד האקר של פרל,

Replies are listed 'Best First'.
Re^2: How To Remove Warnings From Regex
by roho (Bishop) on Feb 04, 2024 at 04:44 UTC
    Thank you Athanasius! That works perfectly. For as long as I can remember, I've avoided the backslash numbers in favor of the dollar-sign numbers, but I see in this case that is exactly what is called for. Thanks again.

    "It's not how hard you work, it's how much you get done."

      \1 works inside the regex where the capture group was defined. $1 works everywhere else, i.e. in a replacement of a substitution. $1 in a regex refers to a previously matched regex (which explains the uninitialized warnings).

      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
        Thanks for the explanation choroba. It always helps to know the "why" behind the way things work. It makes it easier to remember in the future when a similar situation arises. Perl Monks are the best!

        "It's not how hard you work, it's how much you get done."

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2024-05-03 20:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found