Well, i wouldn't say all the preceding examples.
He does use some form of ref($caller) extensively
throughout the book, but not in every example.

And i can admit that "probably better" ain't much of
condemnation, but not as much as i can admit that it
ain't much of a recomendation either. I see nothing wrong
with simpler methods that are less prone to bugs and are
more clearly self-documenting. :)

Update: i should mention that Class::MethodMaker's
new_hash_init specifier makes for a very robust
instance constructor. Consider using it if you don't like
having to write your own clone method.