Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

totally lost

by sweepy838 (Acolyte)
on Apr 29, 2012 at 16:13 UTC ( #967946=perlquestion: print w/ replies, xml ) Need Help??
sweepy838 has asked for the wisdom of the Perl Monks concerning the following question:

such a simple thing, from my tutorials there is nothing wrong with this code.
$input = "-lalala:lalala- hello"; #if "badinput" isnt in the string then print the string. if (!$input =~ m/badinput/) { print "$input!"; }
ripping my hair out :/

Comment on totally lost
Download Code
Re: totally lost
by JavaFan (Canon) on Apr 29, 2012 at 16:22 UTC
    Precedence. You're matching badinput against the negation of $input. Use:
    if ($input !~ /badinput/) { ... }


    if (!($input =~ /badinput/)) { ... }
    but that's more typing, and less idiomatic.
Re: totally lost
by moritz (Cardinal) on Apr 29, 2012 at 16:33 UTC

    Another way to write it:

    unless ($input =~ /badinput/) { print $input; }

    Or even

    print $input unless $input =~ /badinput/;

    With perl 5.10 or newer you can also write

    use 5.010; given ($input) { print unless /badinput/; }

    Though usually it is a better idea to check for valid input (whitelisting) than checking for bad input (blacklisting).

      You do not need given, for/foreach is enough and works even in ancient perls.

      for ($input) { print unless /badinput/; }

      Enoch was right!
      Enjoy the last years of Rome.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://967946]
Approved by Corion
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (15)
As of 2015-03-31 20:48 GMT
Find Nodes?
    Voting Booth?

    When putting a smiley right before a closing parenthesis, do you:

    Results (672 votes), past polls