Prologue: If you think you understand what is going on in this program, ask yourself the following question: What is @P for? Why does it have the value it has? If you don't know the answer, you don't understand the program. @P is the most important data structure. Tampering with @P will break the program totally.