1&2 are supposed to be the same. But 3&4 will confuse the parser if you right your own subroutine named Doggy. I don't understand this at all.
What does the :: do here? I always thought that was the same as a / operator in Unix.
I've always had a huge problem trying to grasp the concept of an object constructor. I know what an object is but what exactly is the "new" doing? Just allocating a different block of memory?
A large portion of the code in this book doesn't work when you simply slap it in a perl script. :-( That is not good for someone trying to learn the language.