As Larry Wall, creator of Perl, so exquisitely summed up, the three indispensable qualities of a good computer programmer are:
(1) Laziness: the quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labour-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.
(2) Impatience: the anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer.
(3) Hubris: excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.
So, in keeping with the above philosophy, I'm going to direct you to a single page of links exquisitely maintained by Paul Roberts, with a lotta good and handy stuff (hey, if he's going to take the time and trouble to do it, dont'cha think it'd be a violation of the PERL policies to waste my time doing the same thing ?! )
Hooooomeward bound ... I wish I was ...