Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: "or die" versus "|| die"

by ysth (Canon)
on Jun 24, 2005 at 15:33 UTC ( [id://469742]=note: print w/replies, xml ) Need Help??


in reply to "or die" versus "|| die"

It's too easy to make precedence mistakes if you use the || variety for this kind of flow control. Witness later in that same faq: http://perldoc.perl.org/perlfaq5.html#How-do-I-randomly-update-a-binary-file%3f the error in the line:
read(FH, $record, $RECSIZE) == $RECSIZE || die "can't read record $r +ecno: $!";
Rule of thumb: use || when you are actually using the result of the operation, otherwise use or.

Replies are listed 'Best First'.
Re^2: "or die" versus "|| die"
by brian_d_foy (Abbot) on Jun 24, 2005 at 15:59 UTC

    Which error? The numeric comparison operator has a higher precedence. If the record size that perl read is the expected record size, the LHS evaluates to one and the short circuit terminates.

    The better rule of thumb is to use or when you want everything else to happen first.

    If you know about problems in the perlfaq, however, you can send them to perlfaq-workers @ perl.org and we'll fix them up.

    --
    brian d foy <brian@stonehenge.com>
      In terms of your "rule of thumb," I like to say that || goes between expressions, and or goes between statements. It's kinda like how , goes between elements, but ; goes between statements. I'm not sure if my phrasing is any more clear to the uninitiated than talking in greek, though.

      --
      [ e d @ h a l l e y . c c ]

        That's not a good rule though because it doesn't actually provide useful guidance and it makes people think about the operators all wrong. It has nothing to do with expressions or statements. It's all about operators and in which order perl evaluates them. That's the information you need to pass on in your rule so that people can figure out what to do.

        --
        brian d foy <brian@stonehenge.com>
      Gah, you are right, and I should know better.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (7)
As of 2024-04-19 10:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found