Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^3: I know what I mean. Why don't you?

by Perl Mouse (Chaplain)
on Nov 22, 2005 at 15:26 UTC ( #510826=note: print w/replies, xml ) Need Help??

in reply to Re^2: I know what I mean. Why don't you?
in thread I know what I mean. Why don't you?

If the offending code runs the same with or without strictures/warnings, then they aren't essential to the code fragment.
I know that, you know that. Unfortunally, it happens over and over again that someone posts a code fragment with a problem, without 'strict' or 'warnings', and where it doesn't matter whether strict and warnings are on or not, and people will reply with pointless posts saying "I don't know what the problem is, but it's better to use strict and warnings".

That's why I recommend to not golf. It's a pre-filter, it keeps out some of the useless replies.

One can speak to strictures/warnings in the exposition.
Sure, but then you might as well say it in the code.
The key is to remove all distractions from the problem at hand.
Exactly. Remove all distractions from the readers. That includes not emitting things that might cause replies of the form "perhaps you should try adding this".

The absense of 'use strict' or the use of '$a' is a trigger for people to respond. Not to the problem, but to the distraction. Add characters - to eliminate distractions.

Perl --((8:>*
  • Comment on Re^3: I know what I mean. Why don't you?

Replies are listed 'Best First'.
Re^4: I know what I mean. Why don't you?
by Aristotle (Chancellor) on Nov 24, 2005 at 01:04 UTC

    Judging the use of strict and warnings by the presence of the pragmata alone is stupid. No my in sight in a longer snippet that uses multiple variables is a much better indicator. Global filehandles and two-argument open are additional red flags. Basically, Iíve seen enough bad Perl code that I can tell it by the ďsmellĒ Iím not even sure all of the hints I pick up on are conscious.

    Though in general, unless the problem is obviously caused by a lack of strictures or would clearly have been pointed out by a warning, I only suggest that the poster may make his life easier by using them. And Iíve downvoted a fair number of nodes where someone just hawks about strictures and warnings when they obviously havenít even taken the time to read the posterís problem description and code. (I remember there was a thread recently where half a dozen people worthlessly posted about strict and warnings when the problem had absolutely nothing to do with that. Way to pollute the forum.)

    Makeshifts last the longest.

      Global filehandles and two-argument open are additional red flags.

      True, unless one is writing scripts that must run on older systems which came with perl 5.005_03 and can't be upgraded in a timely manner. There's still a lot of Solaris 8 out in the wild to which this applies.

        You can use Symbol::gensym on such old perls to get lexical filehandles (more awkward, but gets you the same benefits), and you could write a conditionally installed wrapper to emulate three-arg open (only awkward once, but only worthwhile when you can foresee value in making the code easily forward-upgradable). Whether the effort is justified will depend on your particular circumstances, of course (but see also my signature).

        Makeshifts last the longest.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2021-04-19 13:32 GMT
Find Nodes?
    Voting Booth?

    No recent polls found