in reply to sort an array with +ve & -ve numbers in it

The default sort criteria sorts lexically (alphabetically). You need to specify your own sort criteria.
my @sorted = sort { $a <=> $b } @numbers; my $min = $sorted[0]; my $max = $sorted[-1];

Replies are listed 'Best First'.
Re^2: sort an array with +ve & -ve numbers in it
by missingthepoint (Friar) on Apr 04, 2009 at 05:08 UTC

    An exposition of ikegami's reply (beginners in mind):

    • my @sorted = sort { $a <=> $b } @numbers;
      Calls sort on @numbers, storing returned list in @sorted. Passes sort a code block to use as a comparison function (used to determine whether to swap two elements). $a and $b can be used within the code block to reference the elements being compared. To reverse the sort order, reverse $a and $b in the code block:
      sort { $b <=> $a } @numbers
    • my $min = $sorted[0];
      sort { $a <=> $b } will sort the numbers in ascending order, so the first element of the resultant array is the minimum.
    • my $max = $sorted[-1];
      An index of -1 refers to the last element, which is of course the maximum.

    undef $lunches{free}