perl -E "my $string = 'abc efg hijk lmnop'; if($string !=~ m/defg/) {say $string;}" abc efg hijk lmnop #### use warnings; added to the one-liner this is evident:

!=~ 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 line 1. ##
## C:\>perl -E "use warnings; my @strings = ('12345 defg', 'abc efg hijk lmnop', 'xyz defg abc'); for my $string(@strings) { if($string !~ m/defg/) {say $string;}}" abc efg hijk lmnop