dLux <[EMAIL PROTECTED]> writes:

> Hello!
> 
>   I want to make do a nested hash structure, which seems like that:
> 
>   my  $pname   =  $self->{db}->{product}->offers->{   $product_id}  ->
> {name};
> 
> This kind of structures can be easily created by TableMap.
> 
> Problem: If any  of the hash keys are undef, then  perl "die"-ing with
> an error: Cannot use undef as a HASH reference...
> 
> I suggest  two kind of solution  in the new (perl6)  language, because
> I think perl5 don't have good solution for that:
> 
> 1, $__ variable, which is the result of the last operation, e.g:
> 
> my $pname  = $self->{db}  && $__->{product}  && $__->offers  && $__->{
> $product_id } && $__->{name}
> 
> 2, &&$ operator, which can be used like that:
> 
> my  $pname  =  $self->{db  &&$  ->{product}  &&$  ->offers  &&$  ->  {
> $product_id } &&$ ->{name};
> 
> I  suggest the  second, because  it is  more straightforward,  but the
> first is more flexible.

reduce {last unless defined $a; eval "\$a->$b"} $self,
        qw/{db} {product} offers {$product_id} {name}/;

Hmm... that is a tad unwieldy. And we don't have reduce yet. And I'm
not entirely sure that last would work how you want it to...

-- 
Piers

Reply via email to