two solutions: obvious one:
@a = ( 'E1', 'E2', 'E3', 'En' ); eval '$a{ ' . join( ' }{ ', @a ) . '} = 1'; print Dumper( \%a ); Interpreters rule :) and 'hidden loop' one: @a = ( 'E1', 'E2', 'E3', 'En' ); $a = 1; map{ $a = { $_ => $a } } reverse @a; print Dumper( $a ); both print this: $VAR1 = { 'E1' => { 'E2' => { 'E3' => { 'En' => 1 } } } }; cheers! P! Vladi. On Mon, 28 Mar 2005 15:06:41 -0800 "Zhuang Li" <[EMAIL PROTECTED]> wrote: > Hi, given an array: @a = ('E1', 'E2', ..., 'En'); > > > > Is there an easy way, hopefully one liner, to do the following without a > loop? If not, will Perl support this in Perl 6? > > > > $hash->{E1}->{E2}->...->{En} = 1; > > > > > > Thanks, > > > > john > > -- Vladi Belperchinov-Shabanski <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> http://cade.datamax.bg/ pgp/gpg key id: 6F35B214 (pgp.mit.edu) Cross the ocean deep, wake now from your sleep Kiss the past goodbye, don't follow empty skies...
pgp13Hzk2Nl3I.pgp
Description: PGP signature