В чем разница между if (%hash) и if (defined %hash)?
if (%hash)
if (defined %hash)
my %hash ; if ( %hash) { print "defined "; } if (defined %hash) { print "defined "; }
С определено perldoc -f :
Использование «defined» для агрегатов (хэшей и массивов) осуждается. Раньше сообщалось, есть ли память для этого агрегат когда-либо был выделен. Такое поведение может исчезнуть в будущих версиях Perl. Вы должны вместо этого использовать простой тест на размер: if (@an_array) { print "has array elements\n" } if (%a_hash) { print "has hash members\n" }
Использование «defined» для агрегатов (хэшей и массивов) осуждается. Раньше сообщалось, есть ли память для этого агрегат когда-либо был выделен. Такое поведение может исчезнуть в будущих версиях Perl. Вы должны вместо этого использовать простой тест на размер:
defined
if (@an_array) { print "has array elements\n" } if (%a_hash) { print "has hash members\n" }