Мне нужно проверить, содержит ли мой hashref 0 элементов. Я использовал этот код:Как проверить, является ли хеш-ссылка пустой в perl
$self = { fld => 1 };
%h = ("a" => "b");
$self->{href} = { %h };
print STDERR $self->{href}{ "a" };
print STDERR "\n";
print "size of hash: " . keys(%h) . ".\n";
print "size of hashref: " . keys($self->{href}) . ".\n";
Это хорошо работает с Perl 5.16, но терпит неудачу с Perl 5.10:
Type of arg 1 to keys must be hash (not hash element) at - line 7, near "}) "
Execution of - aborted due to compilation errors.
Если _ref_ не хэш, можно сделать это 'если (ключи $ самостоятельно -!> {«HREF»}) {}', если заявление. Будет ли работать одинаково во всех версиях Perl? –
Нет. Это была экспериментальная функция, которая была оставлена без внимания. – ikegami
Получает ли это возврат пустым или 0? – landesko