There are a few tools that everyone from beginner on up should use.
This list starts from the most basic, and moves onto more advanced concepts, but these
- An IDE or at the very least a text editor that is intended for programmers (duh!) Notepad.exe is not a good programmers editor. If it doesn't tell you what line number you are on, you MUST switch.
- perltidy -- lets face it, everyone will like reading your code if you use this. Including you. It is customizable to match your needs.
- perlcritic -- It can be painful to apply to a codebase already installed, but if you use it as you learn, it is much less painful to roll out later. For existing codebases, there is Test-Perl-Critic-Progressive on the CPAN
- the CPAN -- The puzzle pieces of your problem has probably already been approached in perl, and unless its a weird edge case, there is something out there to help you.
Version control. cvs, svn, git, Mercurial, Bazzar, Fossil. -- It doesn't matter much what youuse, but If you are not using one, then you are heading for troubles.Perlmonks and other more knowledgeable programmers. Lets face it, There will always be someone smarter than you. Ask them questions when you are stuck! I'll be honest, and say I don't spend much time on perlmonks, but I do ask for help when I get stuck, and that's what really matters.
- Template toolkit or another templating tool. -- separating your display logic from your application logic from the start is a very good thing (tm). TT works for all text output destinations (screen, HTML, csv), and therefore is an ideal choice for most outputs. It also makes translation of you application much easier to manage. If you handle this layer properly, reformatting your application to work on a smaller screen size, suddenly becomes much easier.
- some type of DBI abstraction layer (DBIx::Class). In the same way you abstract out your display, you will want to abstract out your database calls.
- An application Framework. For the Web there is Catalyst, Cgi::Application/Titanium, and many others. I primarily develop for the web, so I cannot think of others but they are out there and you should use them. pick a framework that is appropriate, use it.
I'm sure there are more, but you get the point, If I missed something, please add it to the comments below.