Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
Have you used
-w? It enables warnings for dubious practices.
Have you tried
use strict? It prevents you from using symbolic references, makes you predeclare any
subroutines that you call as bare words, and (probably most importantly)
forces you to predeclare your variables with my or
Did you check the returns of each and every system call? The operating system (and thus Perl) tells you whether they worked or not, and if not why.
open(FH, "> /etc/cantwrite") or die "Couldn't write to /etc/cantwrite: $!\n";
Did you read the perltrap manpage? It's full of gotchas for old and new Perl programmers, and even has sections for those of you who are upgrading from languages like awk and C.
Have you tried the Perl debugger, described in the perldebug manpage? You can step through your program and see what it's doing and thus work out why what it's doing isn't what it should be doing.