I always feel it's bad design if one has to do much casting.
Hate to break it to you buddy, but just because you can't see perl doing 'casting' doesn't mean it's not happening all over the place. Perl's weak typing allows variable to transform between numbers, strings, and object almost transparently. That is part of DWIMmery. The difference between perl and a static language like java is that you have to explicitly tell java what you mean instead of it guessing. One is implicit casting one is explicit casting.
Comment on Re: perl, Class::DBI and OO for dynamic languages