Некоторые модули имеют привычку создавать объекты из динамических классов, например, ООкнутые интерфейсы к базам любят делать классы из имён полей таблиц. Кроме того, частенько хочется обратиться к элементу структуры, которой может не существовать. Пёрл переносит обращение к элементам, которых нет, но к элементам таких элеметов уже нет. Как это решается? Вот что делал обычный порошок:
; defined $obj->subobj? $obj->subobj->method: undef
Когда таких конструкций накопилось изрядно, пришлось заставить себя перестать тупить:
; $obj->subobj and $obj->subobj->method
; defined $obj->subobj? $obj->subobj->method: undef
Когда таких конструкций накопилось изрядно, пришлось заставить себя перестать тупить:
; $obj->subobj and $obj->subobj->method