sub coerce_args { my $self = shift; my $type = shift; local $_; # This is needed to guarantee that $type is a string that can be # compared. return @_ if !defined $type || $type eq '' || $type =~ /\d/; if ($type eq 'ARRAY') { # if ($_[0]->isa($type)) { if (ref($_[0]) eq $type) { return @{$_[0]}; } else { return @_; } } elsif ($type eq 'HASH') { # if ($_[0]->isa($type)) { if (ref($_[0]) eq $type) { return %{$_[0]}; } else { return @_; } } elsif ($type eq 'SCALAR') { # if ($_[0]->isa($type)) { if (ref($_[0]) eq $type) { return ${$_[0]}; } else { return $_[0]; } #GGG This one is a little confusing... # } elsif ($type eq 'NONE') { # return @_; } else { return @_; # Unknown $type?? Maybe this is for objects? } }