[Columbus-pm] hash of hashes

Chuck Day Chuck.Day at s1te.com
Mon Sep 29 07:54:09 PDT 2008


Excellent Devon.  Every time I get into these I have to create a test script to get
them to work.  It's confusing because the -> can be assumed in with the reference
array but not assumed for the reference:

$list_ref = {  ref1 => [value1,value2]
};

These both are equal:

print "$list_ref->{ref1}->[1]\n";
print "$list_ref->{ref1}[1]\n";


But this is not permitted because then it's just a hash.  Makes sense!

print "$list_ref{ref1}->[1]\n";







> You need to be more careful about the difference between a hash and a
> hash reference. You sorta get them mixed up in your examples.
>
> #Hash:
> %list = ( list1 => 'value1',
> list2 => 'value2',
> list3 => 'value3' );
>
> #Hash Ref:
> $list_ref = {
> ref1 => 'value1',
> ref2 => 'value2',
> ref3 => 'value3'
> };
>
>
> #Hash:
> $list{list4} = 'value4';
>
> #Hash Ref:
> $list_ref->{ref4} = 'value4';
>
> #Hash:
> for $key (keys %list ) {
>     print "$key\n";
> }
>
> #Hash Ref:
> for $key (keys %{ $list_ref } ) {
>     print "$key\n";
> }
>
>
> -----Original Message-----
> From: columbus-pm-bounces+smithde=oclc.org at pm.org
> [mailto:columbus-pm-bounces+smithde=oclc.org at pm.org] On Behalf Of Chuck
> Day
> Sent: Monday, September 29, 2008 10:09 AM
> To: Derek B. Smith
> Cc: columbus-pm at pm.org
> Subject: Re: [Columbus-pm] hash of hashes
>
> This is a forum.  We can start here with the basic anonymous hash:
>
> $list = { key1 => value1,
>           key2 => value2,
>           key3 => value3 };
>
>
>
> This is known as %list.
>
>
>
> You can add to this:
>
> $list{key4} = value4;
>
>
>
>
> You can print these:
>
> print $list{key4};
>
>
>
>
> Loop through them:
>
> for $key (keys %{ $list } )
> {
>          do something;
> }
>
>
>
>
> I prefer to put the keys into an array though because you can sort these
> better:
>
> @keys = sort(keys %list);
> foreach (@keys)
> {
>          do something;
> }
>
>
>
> Sorting it differently:
>
> @keys = sort { $list{$b} cmp $list{$a} } (keys %list); @keys = sort {
> $list{$b} <=> $list{$a} } (keys %list);
>
>
>
>
>
>> Chuck,
>>
>> Wow could you share these notes in electronic fomat? At times I have
>> issues grasping these data structures.
>> BTW, will columbus.pm hold a Perl workshop in the spring? I read this
>> on PPW's website. I went last year but cannot go this
> year...scheduling conflicts.
>>
>>
>> thank you
>>
>
>
> _______________________________________________
> Columbus-pm mailing list
> http://columbus.pm.org/
> Columbus-pm at pm.org
> http://mail.pm.org/mailman/listinfo/columbus-pm
>
>
>




More information about the Columbus-pm mailing list