use strict; use warnings; my $data = {}; $data->{foo} = { a => 1}; $data->{bar} = ""; if ( %{ $data->{foo} } ) { ... } # ok, because $data->{foo} is a hashref if ( %{ $data->{bar} } ) { ... } # not ok, because $data->{bar} is empty