See the Camel book ch. 24 and Perl Debugged ch. 4 for excellent coverage of Perl gotchas.
I'd be lying if I said I'd never:
- Put a comma after print $fh (where $fh is a filehandle)
- Put a comma-separated list whose first element was a parenthetical expression immediately after print
- Put a function call inside a hash's braces without parameters or parentheses (e.g. return $a{shift})
- put a named constant before =>
- failed to do the right thing when comparing floating point values
- Failed to localize $_ before entering a while loop in a subroutine
- Goofed on the ternary operator's precedence being higher than the named logical operators such that defined $a and $a ? 1 : 0 didn't do what I wanted