http://qs1969.pair.com?node_id=556440

ministry has asked for the wisdom of the Perl Monks concerning the following question:

Monks,

I have a very simple (complex) data structure, and would like to know if there would be any short-cuts to my declaration:

my(%lookup)=( 'site1' => {'0' =>'0', '1' =>'0', '2' =>'0', '3' =>'0', '4' =>'0', '5' =>'0', '6' =>'0', '7' =>'0', '8' =>'0', '9' =>'0', '10'=>'0', '11'=>'0', '12'=>'0', '13'=>'0', '14'=>'0', '15'=>'0', '16'=>'0', '17'=>'0', '18'=>'0', '19'=>'0', '20'=>'0', '21'=>'0', '22'=>'0', '23'=>'0',}, 'site2' => {'0'=>'0', ... '23'=>'0',}, } };

In my code I will end up repeating this 24 hour time stamp as the key to my HoH, for each site. Probably 3 dozen sites in all. Any input would be most appreciated.

cheers! -Ev

Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.

Replies are listed 'Best First'.
Re: building a complex data structure
by Zaxo (Archbishop) on Jun 20, 2006 at 16:14 UTC

    Your hash keys could just as well be array indexes. Using that,

    my %lookup = ( site1 => [ (0) x 24 ], site2 => [ (0) x 24 ], # . . . );

    After Compline,
    Zaxo

Re: building a complex data structure
by sh1tn (Priest) on Jun 20, 2006 at 16:14 UTC
    Maybe
    my %h = ( site1 => {map { $_ => 0 } 0..23}, site2 => {map { $_ => 0 } 0..23}, site3 => {map { $_ => 0 } 0..23}, );


Re: building a complex data structure
by jeffa (Bishop) on Jun 20, 2006 at 16:17 UTC
Re: building a complex data structure
by Fletch (Bishop) on Jun 20, 2006 at 16:25 UTC

    Expanding on the previous suggestions . . .

    my %lookup; $lookup{ $_ } = [ ( 0 ) x 24 ] for ( qw( site1 site2 site3 ) );
Re: building a complex data structure
by davorg (Chancellor) on Jun 20, 2006 at 16:15 UTC
    my @sites = qw(site1 site2); my %lookup; foreach (@sites) { foreach my $h (0 .. 23) { $lookup{$_}{$h} = 0; } }
    --
    <http://dave.org.uk>

    "The first rule of Perl club is you do not talk about Perl club."
    -- Chip Salzenberg

Re: building a complex data structure
by osunderdog (Deacon) on Jun 20, 2006 at 16:29 UTC

    My Variation on the same theme

    use strict; use Data::Dumper; my %hours; @hours{0..23} = (0) x 24; my @siteList = qw {site1 site2 site3 site4}; my %struc; map {$struc{$_} = {%hours},} @siteList; print Dumper(%struc);

    Hazah! I'm Employed! But still looking for opportunities.