Good programmers read a lot.

They constantly keep abreast of new technology that might make their jobs and lives easier and more productive and they never stick their head in the sand or allow themselves to stagnate.

Knowing how to get the most out of books is crucial. Good programmers don't re-invent the wheel. Bad programmers re-invent the wheel at the drop of a hat and do it badly because they fail to learn from others' past mistakes.

Here are a few good books to get you started:

There's enough reading there to keep even an unusually bright geek thinking for a WHILE. If you're not thinking while you're reading you're not doing it right. Read actively making sure you're understanding the words going by and not just breezing over them.

Good programmers are facile with a number of different languages. if you're a hard core Perl nut why not try a more truly object oriented language like Ruby or dare I say it Java? If you've been doing scripting for a while why not do a project in c++?

Good programmers are always stretching the boundaries of their skills.

Good programmers do it because they enjoy it, not because it represents greener pastures.