in reply to Static typing is mostly a waste of time

I agree that Perl's typing system is easier to work with and, in some ways, more intuitive then Java's (with exceptions like the value of a hash in scalar context). But don't just dismiss static typing unless you've tried a language that does it right and you still don't like it. I personally recommend Haskell, because it so plainly illustrates that static typing does not necessarily prevent polymorphism, code reuse, etc. For example, in Haskell there's a builtin function called sum whose signature is:
sum :: Num a => [a] -> a
This means that this single function can be passed a list of any type, so long as that type is numeric (specifically meaning that the operator `+' is defined on it), and return a value of that same type. And you (or the compiler) can "prove" that the types are the same through static analysis - no runtime casting or other ugliness required.