The key thing to recognize about “Perl objects” is that they are “other” data-structures ... usually hashes ... but they have had an epiphany. They are data structures that have been blessed, which is simply an attribute that Perl can recognize.
When a data-structure has been “blessed,” Perl knows how to associate it with a particular package. Method calls therefore succeed, and they are resolved by looking up the package (and thence following the @ISA list).
That's it.
As for “the speed issue,” I am frankly of the opinion that: at 500 million operations per second (or considerably more...) no one can hear you scream. The speed and reliability with which you can write the code, and with which it subsequently runs, trumps other petty-concerns in nearly evey practical case. If your application cannot tolerate the overhead of method-lookups, etc., then you should use another language for at least this part of it. However, you should refrain from judgment on this matter until you have actual benchmarks. You may be pleasantly surprised.