Lotus1 has asked for the wisdom of the Perl Monks concerning the following question:

I'm preparing to present an intro to Perl for some coworkers so I'm glad I found this problem before presenting. The regex in line 10 matches when it shouldn't. I had to stare at it for a while before figuring it out. I'm posting here to give the newbies or anyone else a chance to debug a silly problem.

use warnings; use strict; $_ =''; # find empty lines. print " - empty line\n" if /^$/; # find lines that contain one or more whitespace characters. print " - contains whitespace 1\n" if m/^\s+$/ =~ $_; ## line 10 print " - contains whitespace 2\n" if m/^\s+$/;

Running deparse on the script makes it obvious:

Replies are listed 'Best First'.
Re: regex matches when it seems that it shouldn't
by Discipulus (Abbot) on Apr 21, 2021 at 20:30 UTC
    Hello Lotus1

    Is $_ wrong placed even if it is right placed?    :)

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
      Is $_ wrong placed even if it is right placed?

      Yes. That is a good way to phrase it!

        odd place for $_ even if right place     :)

        L*

        There are no rules, there are no thumbs..
        Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.