Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re^7: Hash of Hashes from file

by scorpio17 (Abbot)
on Apr 03, 2012 at 18:49 UTC ( #963293=note: print w/replies, xml ) Need Help??

in reply to Re^6: Hash of Hashes from file
in thread Hash of Hashes from file

If your data looks like this:

%hoh = ( user1 => { Website => ['website1', 'website2', 'website3'], type => ['type1','type2','type3'], }, user2 => { Website => ['website1', 'website2', 'website3'], type => ['type1','type2','type3'], }, user3 => { Website => ['website1', 'website2', 'website3'], type => ['type1','type2','type3'], }, );
Then try something like this (untested):
for my $user (sort keys %hoh) { my @websites = @{ $hoh{$user}{'Website'} }; my @types = @{ $hoh{$user}{'type'} }; # assume we have the same number of each? unless (scalar(@websites) == scalar(@types)) { die "number of websites is different from number of types!"; } print "$user :\n"; for ( my $i=0; $i < scalar(@websites); ++$i) { print " $websites[$i]\n"; print " $types[$i]\n"; } print "\n"; }

However, if you go with data like this:

%hoh = ( # actually now a hash of arrays of hashes (HoAoH) user1 => [ { Website => 'website1', type => 'type1',}, { Website => 'website2', type => 'type2',}, { Website => 'website3', type => 'type3',}, ], user2 => [ { Website => 'website1', type => 'type1',}, { Website => 'website2', type => 'type2',}, { Website => 'website3', type => 'type3',}, ], user3 => [ { Website => 'website1', type => 'type1',}, { Website => 'website2', type => 'type2',}, { Website => 'website3', type => 'type3',}, ], );
Then your code becomes (untested):
for my $user (sort keys %hoh) { print "$user :\n"; # each element of this array is a hash ref for my $data ( @{ %hoh{$user} } ) { print " $data->{'Website'}\n"; print " $data->{'type'}\n"; } print "\n"; }

So, depending on what you need to do, pick the data structure that makes your life easier.

Replies are listed 'Best First'.
Re^8: Hash of Hashes from file
by cipher (Acolyte) on Apr 05, 2012 at 00:53 UTC
    Logs are per line, My hash should look like the second example you have given above. I am getting syntax error for second code.

    I tried the first code given above and it works fine. I am able to get the all websites and categories for each user. Thanks a lot.

    I will now work on getting count for each Website and Type.
    Name: John Website Count 10 8 5 Type Count Search Engines 10 Entertainment 8 Social Networking 5

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://963293]
[marto]: Eily, there's actually a lot of good discussion on the topic in the HN link choroba posted
[marto]: sorry for the late response, busy busy :/
[Corion]: I think you need to load Readline in the debugger, but I don't know how
[Corion]: Yay, invitation for a team-building workshop, with a team of 100 people :-/
[Eily]: marto after an additional read I started to see the light actually. And choroba's link was helpful as well :)
[Corion]: I'll send my colleague who doesn't yet know the people there, and I'll do production duty instead.

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (15)
As of 2017-07-26 15:03 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (396 votes). Check out past polls.