in reply to Re: Sorting arrays based on a single element
in thread Sorting arrays based on a single element

sub PushDate { $x=0; if (($Date) == $StartDate[2]) { push (@DayAway, $id,$x,$Key) } while ($x < 7) { if (($Date + $x) gt $MaxDays) { $DaysAway = $MaxDays - $Date + $x; # need to see if we are one month ahead!!! } elsif (($Date + $x) == $StartDate[2]) { push (@DayAway, $id,$x,$Key); } $x=$x+1; } }

It appears the data may not be placed in to the array properly from what I see already. After I have pushed (@DayAway, $id,$x,$Key), I want to sort the array based on $x, it appears I cannot do this now. So, I must sort before placing in to the array unless I want to redo the way I enter the data in to the array. Perhaps I should enter it differently.... hmmmm

Replies are listed 'Best First'.
Re: Re: Re: Sorting arrays based on a single element
by BrowserUk (Patriarch) on May 09, 2003 at 19:19 UTC

    Okay. The problem is, that whilst you are pushing your 3 value onto the array with a single statement, the effect is the same as if you had pushed them each individually. So after you have push two sets of 3 onto the array, you end up with an array that looks like this

    @DayAway => ( id1, x1, key1, id2, x2, key2 );

    In other words, 6 discrete values, with no effective grouping between them. So when you sort the array, you'll be comparing apples with oranges, so to speak.

    Try modifying the push statements so that you are pushing an single entity (an anonymous array) that contains the 3 values each time. E.g.

    push (@DayAway, [$id, $x, $Key] );

    Then the sort strategies offered above will work for you.

    I would suggest that you try dumping the array's contents (see Data::Dumper) before and after you make this change to see the difference it makes, and then review perldsc.

    Hope it helps.


    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller