>> next unless %{$ret||{}}; Так писать не стоит, т.к. если $ret - undef, то мы зачем-то создаём пустой хеш, проверяем, что он пустой и делаем next. ИМХО нагляднее так: $ret or next; %$ret or next; А если хочется именно с unless, тогда так next unless $ret && %$ret; Но мне так не нравится.