if(ref($requires) ne 'ARRAY') {
####
if( ! eval { @$requires; 1 } ) { # Can't be used as an array ref
##
##
*isa= UNIVERSAL::isa;
#...
if( isa( $ref, "CODE" ) ) {
##
##
sub isArray { eval { @{$_[0]}; 1 } }
sub isHash { eval { %{$_[0]}; 1 } }
sub isScalar { eval { ${$_[0]}; 1 } }
sub isCode { UNIVERSAL::isa( $_[0], "CODE" ) }
##
##
sub getCommonRefType
{
my( $ref1, $ref2 )= @_;
return "ARRAY" if isArray($ref1) && isArray($ref2);
return "HASH" if isHash($ref1) && isHash($ref2);
return "SCALAR" if isScalar($ref1) && isScalar($ref2);
return "";
}