You have to find something that forces you to look at things you would never look at. People have suggested writing modules, but that just makes you use the stuff you already know. Other people have suggested books, but there aren't that many deep secrets in the books that you can't get almost anywhere else.
Here's what I do, although not on purpose:
- Teach Perl - until you have to explain how something works, you probably don't really understand it. You may be able to use it correctly, but the act of teaching makes you integrate it into a larger view of everything.
- Answer perlfaqs - This is much like teaching Perl, although you don't get the pressure of a student waiting for an answer. you do get to research the topic though.
- Write about Perl - Sit down and write down everything you know about a topic. That's probably only a small fraction of what there is to know. Start filling in the details.
- Read perl5porters, etc - a lot of the deep secrets aren't in books. You'll have to wade through a lot of mailing lists, usenet posts, and other sources to get a few nuggets.
- Read the source - look under the hood of Perl scripts and modules, and do it a lot. If you really want to know the black magic, figure out which authors have weird or fragile idioms and styles. You don't have to code like they do, but you'll have to figure out how they are doing their magic.
- Write the source - if you get over your fear of reading the source, start writing the perl source. You'll have to figure out how everything connects to everything else.
- Just stick around - keep doing what you are doing, but for a lot longer.
brian d foy <firstname.lastname@example.org>