<div dir="ltr"><div><div><div><div>Читал, что наличие сцепленных атрибутов a->b->c->d->e признак очень плохого кода, который надо перепроектировать.<br></div>По опыту такой код плохо читает даже автор.    <br></div><div><br></div><div>Как вариант, который решает некоторые вопросы производительности, но не читаемости.<br><br>our $stub ||= {};<br>$stub->{$_} = $stub for qw/b c d/;<br>my $value = ({ { { { $a->{b} || $stub } -> {c} || $stub } -> { d } || $stub } ->{e});<br><br></div><div>Можно сделать класс TrueFalsiness<br>====================<br></div><div> package TrueFalsiness;<br>use overload 'bool' => sub {};<br>our $true_falsiness = bless {}, __PACKAGE__;<br>sub import{<br>    shift;<br>    my $caller = caller;<br>    for my $name (grep m#\Aw+\z#, @_){<br>        $true_falsiness->{$name} = $true_falsiness;<br>    }<br>}<br>sub new{$true_falsiness};<br>sub AUTOLOAD{$true_falsiness}<br><br>1;<br>====================<br><br></div></div>И можно писать:<br>======================================================<br>use TrueFalsiness qw(b c d);<br>my $stub = TrueFalsiness->new;<br>my $value = ({ { { { $a->b || $stub } ->c || $stub } ->  d  || $stub } ->e);<br>======================================================<br><br><br></div><div>И т.д. и т.п. <br></div><div><br></div><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">20 ноября 2015 г., 21:13 пользователь Nick Knutov <span dir="ltr"><<a href="mailto:mail@knutov.com" target="_blank">mail@knutov.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Тут вот у руби появился оператор безопасной навигации внутрь объекта - <a href="http://habrahabr.ru/company/truevds/blog/271301/" rel="noreferrer" target="_blank">http://habrahabr.ru/company/truevds/blog/271301/</a><br>
<br>
А не появилось ли какого-нибудь готового способа для перла получить аналогичное? Для объектов и для вложенных хешей.<br>
<br>
Для объектов, если это свой код, еще можно сделать примерно как в моджо, но у меня очень много хешей и массивов с большим уровнем вложенности и писать длинные проверки для них - занимает очень много места (<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Best Regards,<br>
Nick Knutov<br>
<a href="http://knutov.com" rel="noreferrer" target="_blank">http://knutov.com</a><br>
ICQ: 272873706<br>
Voice: +7-904-84-23-130<br>
<br>
-- <br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</font></span></blockquote></div><br></div>