in reply to OO sub, hash or hash reference.

Assuming you aren't too bothered about blessed references, how about this?
sub xxx { my $class = shift; my $args = ($#_ == 0) ? { %{ (shift) } } : { @_ };

NB: not my own work.

dave hj~