in reply to Re: compare previous and present hash key values
in thread compare previous and present hash key values

Thanks for your reply. The compare will be something like :

my @a = ( 100, 112,123, 333, 500 ); my @b = ( 100, 333, 500 ); my %b = map { $_ => 1 } @b; my @missing = grep { !$b{$_} } @a;

Which should give, in that case "112" and "123"

Replies are listed 'Best First'.
Re^3: compare previous and present hash key values
by NetWallah (Canon) on Jan 11, 2014 at 15:28 UTC
    Re-posting, in case you did not notice my update to my previous post:

    If you really want to examine CURRENT, PREVIOUS and NEXT items in an array, consider using Array::Iterator::BiDirectional.

    However - the need for that is not clear, from the information you have provided so far.

    If you post pseudo-code (even if it does not work/compile) of what you are trying to do - we may provide better alternatives.

            If your eyes hurt after you drink coffee, you have to take the spoon out of the cup.
                  -Norm Crosby

      I have a database that keeps routing paths to a destination

      As such : Path network updatenumber 33 1 1 4 1 1 42 1 1 34 1 1 33 1 2 42 1 2 34 1 2

      So that is an example of a database whereby to reach a particular network in the example (1) you need to traverse through 33 -> 4 -> 42 -> 39, but as time goes on there are updates to the route. So, what i am trying to archive is to see the numbers in a path that appear and disappear often. Which is why i am comparing the first updated route, to the second updated route. With the difference, i will store in a separate table. If a value already exist on that table, i will just increment it.So logically the highest value on that table will be a device which is troubled.Because it keeps appearing and disappearing. In my example database above, 4 is a difference between both paths. So i will store that somewhere etc. From my question i already loaded this database values into the hash. I was just stuck at doing the previous->next logic.

        You could still use the Array::Iterator::BiDirectional idea, populating the array iterator with the KEY of the hash.

        However, if all instances of a route have already been loaded into memory (which, to me, is a lot of unnecessary overhead), You simply need to step through each one, comparing it to the previous one. (No need for the NEXT).

        If you show us your code for the data structure you created, identifying the field names for the network, and path identifier, and instance, we could show you how to walk that structure.

        Without that, abstract discussion will only confuse.