Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Re: Re: Re: Re: Simplifying code (Not obfuscation)

by Molt (Chaplain)
on Mar 04, 2003 at 13:56 UTC ( [id://240342]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Re: Simplifying code (Not obfuscation)
in thread Simplifying code (Not obfuscation)

No, you're quite right. I was being stupid and messed up, will correct that in a second so as not to confuse others.

The precedence issue is moderately easy to explain in this context. There's a standard Perl idiom

open FILE, "file.txt" or die "Error: $!\n".

This is the equivilent to

open (FILE, "file.txt) or die "Error: $!\n"

as the 'or' is evaluated after the open command.

If you were to try

open FILE, "file.txt" || die "Error: $!\n"

you may be surprised to know you'll never get the error message, this is because the || operator is evaluated before the open and so this is actually equivilent to

open FILE, ("file.txt" || die "Error: $!\n")

and so would only die if the string literal "file.txt" was blank. Not good. You get a similar thing with thing happening quite often.

Moral of this story: Generally use || for defaulting values ($a = $b || $c), but use 'or' for logic control similar to the above.

Oh yeah, and make sure your code dies when it gets an error, not when it doesn't.. I seem to have failed on this one

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: Simplifying code (Not obfuscation)
by 2mths (Beadle) on Mar 04, 2003 at 15:35 UTC
    Thanks for taking the time to explain that and for doing it so well.

    My future coding should be much improved because I can now consider such issues as this and how to test for errors. At the moment it's all a mish mash of other people's code, cut and pasted. It will be good to be able to write these things from scratch myself.

    I have copied your post into my 'reference' notes. So I shouldn't ever need to ask the question again.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2024-04-25 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found