In general, what is the best way of testing if $object->top->bottom exists? I don't care (IOW it is OK) if bottom returns undef. Perhaps bottom or top do not exist. I don't want to put it in an eval because that could potentially execute bottom. Is it bad to rely on UNIVERSAL::can:
if $object->can('top') and $object->top->can('bottom') ...