Just some more terminology. A "method" is &{lookup($x, 'name')}($x, ...). A "multimethod" is just &{lookup($x, ..., 'name')}($x, ...)).

one of the peculiar sides of Perl is that plenty of build-ins internally work on references and but force you to dereference the argument manually.

each() *once* only worked on hashes, so it could complain at compile-time. Now it not only works on hashes and hash-refs, but also on arrays and array-refs, so if it gets a reference, it has to either guess (i.e. DWIM) or, in the current implementation, complain and refuse to do anything useful (i.e. "Type of argument to each on reference must be unblessed hashref or arrayref").

Comment on Re^6: Autoboxing ... "Yes We Can" ( or how I learned to love TIMTOWTDI )