Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Perlish way of doing this

by htoug (Deacon)
on Dec 08, 2004 at 11:44 UTC ( #413162=note: print w/replies, xml ) Need Help??

in reply to Perlish way of doing this

It would probably help if you explained *what* the program is trying to do. Of course we can all use our copious free time to analyse it and discover that your program just blorfurgates the quadruggles, but it would be a lot easier if you had explained it.

There is more than one way to do it - especially in perl!

Replies are listed 'Best First'.
Re^2: Perlish way of doing this
by htoug (Deacon) on Dec 08, 2004 at 12:53 UTC
    Ahhh, now I see. Ie after you updated the question.

    I think that it could be simplified by noting that the two tmp-arrays can be created given only one of the input arrays - @tmp1 depends only on @a1 and @tmp2 only on @a2.

    Your loop could be shortened to something like:

    for my $elem (sort keys %a) { push @tmp1, (grep($elem eq $_} @a1) ? $elem : "##"; push @tmp2, (grep($elem eq $_} @a2) ? $elem : "##"; }
    That satisfies your explanation.

    But your code seems to indicate that the value is put into the tmp-arrays also if the value is present in neither the @a1 or @a2. Unfortunately your code does not have an example of this, so it cannot be tested.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://413162]
[Lady_Aleena]: Good morning Corion, I hope you have a wonderful day as well. 8)
[Corion]: Yesterday I encountered an interesting data structure problem. I have a remote program that emits events, and my client listens for these events with one-shot callbacks, that is, I register the callback and if the event gets generated that callback ...
[Lady_Aleena]: robby_dobby, every day. Chaos is my life with few controls.
[Corion]: ... gets called once. The data structure for that is just a hash of arrays, mapping the event type to a queue of registered one-shots, and the first one-shot from the queue gets removed and called.
[Corion]: But now I want to register a one-shot for two events, of which only one will arrive, so my data structure doesn't work anymore...
[Lady_Aleena]: Corion, ouchy.
[Corion]: (maybe I should write this up as a SoPW) - currently, the "most efficient" data structure I come up with is a single array which I scan for the first fitting one-shot. Not efficient but I don't expect more than five outstanding one-shots anyway
[choroba]: can't you create a meta-key corresponding to the disjunction of the events?
[robby_dobby]: Corion: Heh. This whole thing smells of Strategy Pattern or MVC pattern.
[Corion]: And performance linear to the number of registered one-shots doesn't feel that bad. Maybe I should collect statistics on how many callbacks are outstanding ;)

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2017-05-29 07:52 GMT
Find Nodes?
    Voting Booth?