Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: regular expression inverse match NOT match?

by ww (Archbishop)
on Sep 25, 2013 at 02:39 UTC ( [id://1055598]=note: print w/replies, xml ) Need Help??


in reply to regular expression inverse match NOT match?

There's really not much wrong with your sample code, if I understand your intent correctly:
perl -E "my $string = 'abc efg hijk lmnop'; if($string !=~ m/defg/) {s +ay $string;}" abc efg hijk lmnop

If it does the job without side-effects, it's probably correct!

But is there some reason you couldn't have answered this yourself... or at least satisfied yourself that your code does or does not work?

Update on my oops: TY, Athanasius who pointed out my typo and, implicitly, that -E does not invoke warnings, whose use would have also pointed out my mistook. With a

use warnings;<c> added to the one-liner this is evident:</p> <c>!=~ should be !~ at -e line 1. Use of uninitialized value $_ in pattern match (m//) at -e line 1. Argument "abc efg hijk lmnop" isn't numeric in numeric ne (!=) at -e l +ine 1.

With the correction, and a more generous example of strings, however, IJW:

C:\>perl -E "use warnings; my @strings = ('12345 defg', 'abc efg hijk +lmnop', 'xyz defg abc'); for my $string(@strings) { if($string !~ m/d +efg/) {say $string;}}" abc efg hijk lmnop

Which just goes to say, OP had the "not much wrong" idea.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (4)
As of 2024-04-24 05:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found