Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Re: Re: dealing with arrays as hash values

by sacked (Hermit)
on May 17, 2004 at 22:46 UTC ( [id://354122]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: dealing with arrays as hash values
in thread dealing with arrays as hash values

In your first code above, $wo_usr_proj{$proj} is a reference to an array, not an array. You need to dereference this value, as you did in your call to push:
push @{$wo_usr_proj{$project}}, $user;
Currently the sort call is only sorting a list with one value (the address of the array stored in $wo_usr_proj{$proj}). The code below corrects this by dereferencing the hash element to retrieve the array:
foreach $proj(sort(keys(%wo_usr_proj))) { print RHANDLE "$proj:\n";$wo_usr_proj{$proj} # note dereference: @{ $array_ref_here } foreach $element(sort @{ $wo_usr_proj{$proj} }) { print RHANDLE "$element\n"; } print RHANDLE "\n\n"; }
Please take a look at Data::Dumper, as it is invaluable in illustrating the structure of the data in your code. You simply pass the Dumper function a reference to the data structure you wish to see expanded:
use Data::Dumper; print Dumper \%wo_usr_proj; __END__ $VAR1 = { 'project2' => [ 'WO', 'WO2 ], 'project1' => [ 'WO' ] };
As for your second code snippet, the code is not dereferencing $element, but rather, is creating another reference to $element.

If $scalar is a reference to a scalar value, dereference using $$scalar:
my $foo= "bar"; my $ref= \$foo; print $$ref; __END__ bar
If $arr is a reference to an array, dereference using @$arr:
my @array= qw(foo bar baz); my $ref= \@array; print join ':' => @$ref; __END__ foo:bar:baz
If $href is a reference to a hash, dereference using %href:
my %h= ( foo => 'bar' ); my $ref= \%h; while( my( $k, $v )= each %$ref ) { print "$k -> $v" } __END__ foo -> bar
Please see the pod for perlreftut, perldsc, and perllol for more details.

--sacked

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://354122]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-04-26 00:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found