|Think about Loose Coupling|
Well, I'm no Perl hacker, but I can write pretty good sites in perl.
I first started when a customer of mine was wanting to do some pretty unique things on his website. I knew it was possible but did not know HOW to do it.
I went on a search and found several great sites that had tutorials. I did all of them I could find. Plus I'd download every script I could find and tear them down, and see what the code did, and how it was written. I've since then figured out what was not so good, and tried to keep the best practice(In my mind).
I loved what I had learned. I built his scripts with ease, using what I had learned. Since then my knowledge has flourished compared to then, and I now build complete sites, that have the ability for our clients to login and be able to make any changes to their site using a "control panel" that I build in Perl and MySQL.
I LOVE doing it. I really enjoy building websites for people that make their life easier.
I still have much more to learn. I've been so busy with building these sites that I have not had time to learn the advanced features that Perl has to offer, but when I can, I learn more and more.
Right now I'm building a website that has a complete Affiliate Manager, where the owner can upload new banners, update prices, PAY his affiliates, and basically do everything that a 65,000 per year Affiliate Manager does ;o)! The users can see all the banners, click the "get link code" LINK and it will build them their code which even has tracking built into it.
All this is done with, Perl(MySQL too). I don't think there is another language out there that I would prefer to do it with.
When I am writing code, I try to make NO mistakes. Often I can write 400 lines of code, upload it and test it, and there might be just a few uninitialized values, but no major errors. I love it when I do that. Other times when I'm really tired I make a lot more mistakes. But I don't ever do it for speed, unless I'm charging by the hour. I want to make sure everything I do cannot be exploited. That is my main goal. Plus it has to be readable, so I use Tabs a LOT, I start every if statement on the same line and end it on the same line, if I start another inside of one, there is one extra tab and so forth.
That is how I do it.