Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: regular expression inverse match NOT match?

by ww (Archbishop)
on Sep 25, 2013 at 02:39 UTC ( #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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055598]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2018-03-18 20:28 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (230 votes). Check out past polls.