Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: if variants

by ihb (Deacon)
on Oct 21, 2004 at 14:37 UTC ( #401180=note: print w/ replies, xml ) Need Help??


in reply to Re^2: if variants
in thread if variants

It's worth noting, by the way, that using $foo != 7 as the control statement in an if statement is generally a Bad Idea. The unless statement is designed to cover that need, and using the != operator there just makes the code harder to read later when it must be maintained.

I second DrHyde (Re^3: if variants). It's definately not bad and neither is it a maintenance trouble. That whole sentence above should be removed from your text. It's just plain wrong.

The unless keyword is made to make you write code more like a natural language. It's not there to take !='s place in if expressions. They can both coexist happily and be mixed however you please.

Why the combination of unless and else is shunned by many is because it's a sort of double negation.

if (X) { ... } else { ... }
can be read
if (X) { ... } if (not X) { ... }
"unless X" can be read "if not X". Combining this gives you
unless (X) { ... } else { ... } if (not X) { ... } if (not not X) { ... }
which just doesn't read well. Logically it's not strange but it's a funny and inappreciated way of expressing oneself.

My own (rather inconsistent) style is to use unless for exceptional behaviour, and if for expected/wanted behaviour. When using unless I usually want something, but something might stop me from doing that. With if I express that I perhaps want something, perhaps not.

print ... unless $quiet; # I want to print. exit if $done; # I might want to exit here. exit unless $stay; # I want to exit here, but apparently # something is holding me back.
The examples can perhaps be better, and I'm not consistant myself in my use, but that's give you an idea of how I tend to use them.

ihb

See perltoc if you don't know which perldoc to read!
Read argumentation in its context!


Comment on Re^3: if variants
Select or Download Code
Re^4: if variants
by apotheon (Deacon) on Oct 21, 2004 at 14:48 UTC
    Thanks for the clarification. Mea culpa.

    - apotheon
    CopyWrite Chad Perrin

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (19)
As of 2015-07-02 17:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (44 votes), past polls