in reply to Sorting large sets of geometric coordinates
A hash isn't appropriate, because nothing is guaranteed to be unique (as far as you've let on). You also ask to sort, and hashes are unordered.
my @unsorted_data;
while (<DATA>) {
my @fields = /([\d.]+)/g or next;
push(@unsorted_data, \@fields);
}
my @sorted_data = sort { $a>[1] <=> $b>[1]
 $a>[0] <=> $b>[0] } @unsorted_data;
print("(($_>[0] $_>[1]) ($_>[2] $_>[3]))\n")
foreach @sorted_data;
Update: Tested. Fixed the print.
Update: Fixed the error discussed below.
Re^2: Sorting large sets of geometric coordinates by thor (Priest) on Apr 20, 2006 at 02:43 UTC 
 [reply] [d/l] 

It handles ties in $row_ly. <=> returns 0 if the two things it compares are equal. For example, if the compare function were to be called to compare the following two rows,
((5.0 0.4) (48.0 0.5))
((48.1 0.4) (99.0 0.5))
The first <=> would return 0 since $a>[1] (0.4) and $b>[1] (0.4) are both equal. It would then go on to compare $a>[0] (5.0) with $b>[0] (48.1)
Update: OOPS! Copy and paste error. The code should read:
my @sorted_data = sort { $a>[1] <=> $b>[1]
 $a>[0] <=> $b>[0] } @unsorted_data;
Nod to BrowserUk for the head's up.  [reply] [d/l] [select] 
