http://qs321.pair.com?node_id=310231

fabius has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I want to sort an array (actually it's a table), I mean something like that:
$events [][][][] its a matrix n x 4, and I want to sort it by third column i.e.,
I tried with Sort_Table() but it doesn't seem working.
@events = Sort_Table( cols => '4', field => '3', sorting => 'descending', structure => 'single', # I tried whith csv too #separator => '\*', data => \@events, );<
Does anybody know how can I do that?????

Edit: BazB added code tags (again).

Replies are listed 'Best First'.
Re: sort array
by hardburn (Abbot) on Nov 26, 2003 at 14:54 UTC
    sort { $a->[2] cmp $b->[2] } @array

    See also: sort.

    ----
    I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
    -- Schemer

    : () { :|:& };:

    Note: All code is untested, unless otherwise stated

Re: sort array
by BazB (Priest) on Nov 26, 2003 at 13:48 UTC

    Where does this Sort_Table routine come from?

    You need to add all relevant code for us to figure out where you're going wrong.
    You should probably include some small example datastructures in your question too.


    If the information in this post is inaccurate, or just plain wrong, don't just downvote - please post explaining what's wrong.
    That way everyone learns.

      Sort_Table comes from Sort::Array. It is however, overkill this time, as the straightforward sort command shown in the next comment works perfectly.
      Sort_Table come from
      use Sort::Array qw(Sort_Table);
      the array comes from the parsing of several log files
      and I build it in that way
      $eventi[$count][0]=$feed; $eventi[$count][1]=$1; $eventi[$count][2]="Restored"; $eventi[$count][3]="$var" 1 Sep 17 06:16:36 Restored a 1 Sep 22 06:22:40 Fault b 1 Sep 22 06:25:05 Restored a 1 Sep 22 12:36:19 Fault 1 Sep 22 12:37:10 Restored b
      the date is the second field
      and count goes from 0 to n
      so I achieve a matrix n x 4
      I want to sort it by one of its columns
      If I set the parameter structure = 'csv' it doesn't sort,
      if I set strucure = 'single'the output is an error:
      Use of uninitialized value in concatenation (.) or string

      Edit: BazB more code tags.