|Do you know where your variables are?|
This is not a story about Perl. Or Perl programming. Or even computers.
Rather it is a story about the road to mastering any logical subject.
As my bio says, I once studied math. One subject in math is analysis. This is the true story of a student that my first analysis professor once had.
This student was a physics student. He did not really want to take analysis. But he decided that if he was taking it, then he might as well truly learn it.
When he sat down to do his first homework he realized that he did not understand what it meant to prove something. So he went to the professor and asked what a proof was. The professor answered, "A proof is an airtight demonstration that a thing must be so." The student asked what could be assumed. The professor answered, "You may start with the axioms and the theorems we have proven from the axioms." The student asked if you had to accept the theorems, the professor said, "You need not accept anything that you have not been fully convinced of."
The student's first homework set was 20 pages long. The other students needed 5. The student was concerned and asked the professor, "My homework is so much longer than theirs is. Am I doing something wrong?" The professor said, "You may take as long to do it as you need to. Did you keep in mind what I said about axioms and theorems?" The student answered, "I did, but I didn't feel that I understood the theorems so I worked from the axioms only." The professor answered, "That is good but learn to build on what you already know." The student promised to try.
The student's first homework was perfect. As the course progressed the student continued to try. Homework by homework he maintained excellent work, and step by step learned to organize his thoughts so that he could build on previous results in class and in his own work. And step by step the length of his homework fell.
By the end of the course the other's still needed 5 pages for their homework. But this student did not. He no longer needed 20. He no longer needed 10. Instead his perfect assignments fit comfortably on a page with room to spare.
The professor congratulated him on his progress and asked him about the cause. The student said, "Well I know the subject so well that I know exactly how to do each problem, and I do that and no more."
Here then is the moral for Perl programmers. When you see the code of master Perl programmers you may be amazed at how few strokes of the keyboard they require to solve a problem completely. Many in error think that they should therefore constantly try to cram as much into as little room as possible.
This is a misguided path.
Instead strive to understand fully and completely the tool at hand. Explore exactly how it works and what it can do. In addition constantly learn how to build on what you and others have done before. Aim for clarity and comprehension, and mastery shall surely follow.
This is a true path.