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

unless statements

by root (Scribe)
on Nov 05, 1999 at 04:10 UTC ( #947=perltutorial: print w/replies, xml ) Need Help??

Unless statements allow you to say unless something is true do this. For example:
unless($divisor==0){      #so long as the $divisor isn't equal to 0
  $value=$value/$divisor; #go ahead and divide $value by $divisor
} else {
  $divisor=1;             #otherwise set $divisor to 1
If you've got that I suggest you take a look at while loops

Replies are listed 'Best First'.
Re: unless statements
by htoug (Deacon) on Feb 08, 2005 at 11:09 UTC
    It is a matter of taste (and style), but I only use unless without the else-clause. If you have the else, then you could just as well use a normal if and get better readability - it's more like waht everyone is used to.

    But in a standalone if (!(some_complicated_expression)) the use of unless lets you remove one pair of parenthesis and lets the poor smuck reading the code have one less thing to worry about.

    I would rewrite your example as

    $value=20; if ($divisor!=0){ #so long as the $divisor isn't equal to 0 $value=$value/$divisor; #go ahead and divide $value by $divisor } else { $divisor=1; #otherwise set $divisor to 1 }
    Now the statement says the same as the comment (in your code it should have been #unless the $divisor isn't equal to 0 - 'so long' indicates a repetition IMHO).
      Hello , well i think unless is a loop and things like : if ($divisor!=0){ doesn't work rather than using unless if will procedes the action for one time but unless will keep procedes the same things unless the statment goes wrong that's what i think
what is benefit of unless ?
by Anonymous Monk on Feb 05, 2005 at 11:34 UTC
    I think unless statements are similar to if statements.But if-else stmt gives us more flexibility then unless.So is there any specific use of this . please reply soon. regards, barun parichha
      $ cat input foo bar $ perl -ne 'print unless /^$/../^$/' input foo bar $ perl -ne 'print if not /^$/../^$/' input foo bar $ perl -ne 'print if ! /^$/../^$/' input foo bar
      The unless statement is equivalent to if not, but is different from if ! due to the associativity and precedence rules covered in perlop. A benefit of this behavior allows the reduction of runs of blank lines to a single blank line.

      taken from here
        is this the equivalent code for " unless(condition)" ? if !(condition) { ... ... } else { ... ... } reply soon, barun parichha
        You can use the if/else statement intead of "unless" but it requires more commands of if/else than "unless" and the loop continues as long we required

      It is not similar statement.

      $a = 10; print "if stmt true" if ($a == 10); print "unless" unless ($a == 10);


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perltutorial [id://947]
and one hand claps...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2017-10-19 06:42 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (251 votes). Check out past polls.