Я думаю, что подпрограмма none
из List::MoreUtils
не работает, как описано. Согласно документации,
none BLOCK LIST Логически отрицание любого. Возвращает истинное значение, если
ни один элемент в LIST не соответствует критерию, указанному в BLOCK, или, если LIST
пусто . Устанавливает $ _ для каждого элемента в списке по очереди
Теперь попробуйте:
use strict;
use warnings;
use 5.012;
use List::MoreUtils qw(none);
my @arr = ( 1, 2, 3 );
if ( none { $_ == 5 } @arr ) {
say "none of the elements in arr equals 5";
}
else {
say "some element in arr equals 5";
}
работает нормально, но замените @arr
пустым (my @arr = ();
или просто my @arr;
), и вы получите неправильный ответ.
Что происходит?
обновление: у меня был List :: MoreUtils ver 0.22. Обновлено до последней и, кажется, ОК. Странно, хотя!