in reply to Future Programming Direction
That having been said, pick an interesting problem and try to solve it. Something that can't necessarily be solved probably works best, like Artificial Intelligence problems. I'm been working on a Machine Translation Engine (think babelfish) and that's really stretched me. I've implemented a mini language using eval, done some complex parsing with regexes, and other things that have allowed me to understand perl (and programming) much better.
Pick something that interests you and try to come up with a solution. It doesn't even matter if it's in perl. A couple of ideas:
Or pick something(s) that you wish you had and write them. That's often times how some of the best tools come about. I believe that's how most scripting languages have come about. Write something that's missing from linux. Write something that will make your life easier. Then, do it again.
Hope this helps,