unless( $a ne $b ) {
####
if( $a eq $b ) {
# or
if( $a ne $b ) {
##
##
croak( "You must pass foo() a non-empty array ref" )
unless $arg && 'ARRAY' eq ref($arg) && 0 < @$arg;
##
##
croak( "You must pass foo() a non-empty array ref" )
if ! $arg || 'ARRAY' ne ref($arg) || 0 == @$arg;
##
##
croak( "You must pass foo() a non-empty array ref or hash ref" )
unless 'ARRAY' eq ref($arg) && 0 < @$arg
|| 'HASH' eq ref($arg) && 0 < keys %$arg;
##
##
croak( "You must pass foo() a non-empty array ref or hash ref" )
if( ( 'ARRAY' ne ref($arg) || 0 == @$arg )
&& ( 'HASH' ne ref($arg) || 0 == keys %$arg )
);
##
##
croak( "You didn't pass foo() a reference" )
if ! $arg || ! ref $arg;
if( 'ARRAY' eq ref $arg ) {
croak( "You passed foo() an ARRAY ref but it was empty" )
if 0 == @$arg;
...
} elsif( 'HASH' eq ref $arg ) {
croak( "You passed foo() a HASH ref but it was empty" )
if 0 == keys %$arg;
...
} else {
croak(
"You passed foo() a ", ref($arg),
" ref (must be ARRAY or HASH)",
);
}