You learn by doing.
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:
Of course that may not interested you. After all, it's not very practical. Helping with Perl 6 is an excellent idea too. I'm sure we'd all love to see everyone who is able contribute to the project.
- Genetic algorithms
- A program that creates photo mosaics
- Swarm intelligence
- Pattern recognition
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,
elusion : http://matt.diephouse.com