use strict; use warnings; use Scalar::Util 'reftype'; use Test::More 'no_plan'; sub foo { reftype( $_[ 0 ] ) || '' eq 'HASH' and ( my %h = %{ shift() } ), 1 or die; return 1; } ok( eval { foo(+{}) }, 'empty hashref' ); ok( !eval { foo() }, 'no input' ); ok( !eval { foo( 1 ) }, 'bad input: constant' ); ok( !eval { foo( [] ) }, 'bad input: array ref' ); ok( eval { foo( +{ 1 => 1 }) }, 'good input' ); __END__