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 ""; }