Функция exists
может неожиданно автоматически оживить записи в хэшах.
Что меня удивляет, так это то, что это поведение также переносится на константы:
use strict;
use warnings;
use Data::Dump 'dump';
use constant data => {
'foo' => {
'bar' => 'baz',
},
'a' => {
'b' => 'c',
}
};
dump data; # Pre-modified
print "No data for 'soda->cola->pop'\n" unless exists data->{soda}{cola}{pop};
dump data; # data->{soda}{cola} now sprung to life
Вывод
{a => {b => "c"}, foo => {bar => "baz"}} Нет данных по запросу 'soda-> cola-> pop' {a => {b => "c"}, foo => {bar => "baz"}, soda => {cola => {}}}
Я подозреваю, что это ошибка. Это что-то особенное для 5.10.1 или другие версии Perl ведут себя аналогичным образом?