Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Re: Things every perl programmer should know?

by Jenda (Abbot)
on Jun 04, 2003 at 19:33 UTC ( #263125=note: print w/ replies, xml ) Need Help??


in reply to Re: Things every perl programmer should know?
in thread Things every perl programmer should know?

I'd use

use strict; use warnings; no warnings 'uninitialized';
myself. I seriously dislike having to write code like
if (defined $foo and $foo) { ...

Update on Jun 05, 2003: I do not remember the last time I got a "Variable is used once" warning. Maybe I was just lucky :-)

Jenda
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
   -- Rick Osborne

Edit by castaway: Closed small tag in signature


Comment on Re: Re: Things every perl programmer should know?
Select or Download Code
Re^3: Things every perl programmer should know? (disabled warnings)
by Aristotle (Chancellor) on Jun 04, 2003 at 23:17 UTC
    For me, it's:
    use strict; use warnings; no warnings 'once';
    because that sodding warning has never caught anything for me that strict wouldn't have trapped sooner. The kicker is that fixing it requires jumping through very silly hoops to make it go away. ($foo = $foo = 1; anyone?) As for uninitialized - well, I don't get a warning on
    if ($foo) { ... }
    I admit it's sometimes a little awkward to code around the uninitialized warning, but usually something like adding a || 0 or || '' or such does the trick just fine. And that kind of thing isn't silly, in fact I think it's clearer in intent in that I document via code that I explicitly expect undefs there.

    Makeshifts last the longest.

      no warnings 'once'; because that sodding warning has never caught anything for me that strict wouldn't have trapped sooner. The kicker is that fixing it requires jumping through very silly hoops to make it go away.

      I find that error message very useful. It's not just catching spelling errors, which strict does indeed do better, but it's also catching variables that you really did use once. Variables used once are useless.

      If you have a variable that is used only once, then why use that variable? You're throwing away its value if it has one, and there's a variable declared that you don't use. "Variable used only once" actually means "Hey, you forgot to remove a line during your lastmost recent refactoring" or at least "You're throwing away valuable resources". :)

      Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }

        That would be helpful, except the warning only catches package variables, which I often very well intend to set only once (usually another module's option variables, stuff like $CGI::POST_MAX). The amount of package variables used in my code is very nearly zero anyway, and I scope my lexicals as tightly as possible (I don't reuse temporary variables either) so leftovers are a pretty much a non-issue.

        In summary, all that warning has ever managed to do for me is to cause mild to immense irritation, without any benefit whatsoever.

        Makeshifts last the longest.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2014-08-29 01:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (275 votes), past polls