Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re^3: Determine largest key in hash

by MidLifeXis (Monsignor)
on Oct 04, 2011 at 17:56 UTC ( #929620=note: print w/replies, xml ) Need Help??

in reply to Re^2: Determine largest key in hash
in thread Determine largest key in hash

Ok, Given that use, I would probably do either a sparse array, or a *cringe* hash with numeric keys. Please note that your data under each first level key is not correct...

my %hash = ( 1 => [ { name => "Shrek", event => "I saw shrek!" }, ], 6 => [ { name => "Donkey", event => "I saw the donkey!" }, { name => "Fiona", event => "I saw Fiona!" }, ], );

You would access this stuff then with....

for my $trigger ( @{ $hash{$cnt} || [] } ) { # Do work here with $trigger .... }

See Re: Determine largest key in hash for details on how to push data into the trigger list.

As a sparse array, this would look like...

my @data = ( [ # 0 (remember, we are zero-based) { name => "Shrek", event => "I saw shrek!" }, ], undef, # 1 undef, # 2 undef, # 3 undef, # 4 [ # 5 - zero-based => 6th element { name => "Donkey", event => "I saw the donkey!" }, { name => "Fiona", event => "I saw Fiona!" }, ], );

You would change your loop to...

for my $trigger ( @{ $data[$cnt-1] || [] } ) { # Do work here with $trigger .... }

I still have a little bit of a cringe-factor with the layout of the sparse array, and would probably reevaluate the control logic around that, but this shows a couple of ways where the structure can make quite a difference in how you manage your data.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://929620]
[Tanktalus]: He might see me here... :D
[Discipulus]: it's me? ;=)
[marioroy]: Lady_Aleena could it be a quoting issue? I just tried find with -exec on the command line. find . -name "*.pl" -exec ls -l {} \;
[Tanktalus]: No, I know who he is, nice try. But if you're hiring, let me know :)
[Tanktalus]: Lady_Aleena: yeah, I can reproduce your issue, it's confusing alright :)
[Tanktalus]: I'm sure it'll make perfect sense once we figure it out :)
[Lady_Aleena]: marioroy, not a quoting error. I can't run it on the command line. It is when I put it in qx() where it falls apart.
Discipulus hired to use Perl in Eataly? haired maybe
[choroba]: We're hiring
[Discipulus]: wow praha!

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2017-04-23 20:04 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (432 votes). Check out past polls.