in reply to Competition: deceptive code

But to at least illustrate what I'm talking about, consider:
if (undef($a) || undef($b)) { ... }
and then there's the ever popular
if ($a = 1) { ... }
I'd put these two in the category of "Common Goofs for Novices". The Camel Book has a section dedicated to this. So, in addition to your competition, I'd be interested in seeing a list of common Perl goofs. I've certainly seen plenty over the years, since we have a lot of "occasional" Perl programmers at work. Some random ones that I remember seeing often at work are:

Related to this is a WTF-style competition. I noticed an amusing one reported by Dominus the other day, namely what is wrong with this code?

for my $k (keys %hash) { if ($k eq "name") { $hash{$k}++; } }
Answer: it is better written as $hash{name}++ ... which is an example of the classic Larry quote: Iterating over the keys of a hash is like clubbing someone to death with a loaded Uzi. :-)

Replies are listed 'Best First'.
Re^2: Competition: deceptive code
by ambrus (Abbot) on Jan 13, 2008 at 17:23 UTC
    The Camel Book has a section dedicated to this.

    You mean perltrap?

      You mean perltrap?
      At the time, I was referring to the section entitled "Common Goofs for Novices" in Chapter 24 (page 585) of Programming Perl, 3rd edition. Though I knew about perltrap, I temporarily "forgot" about it and so did not mention it. :-( Since the "Common Goofs for Novices" section and perltrap share a common heritage, perltrap is a more up-to-date reference and is recommended reading. Thanks for pointing this out.