This is nothing to do with arrays but how
sort processes it's arguments, which is lexically (as opposed to numerically as you were expecting). Here's the relevant paragraph from the
sort docs
sort SUBNAME LIST
sort BLOCK LIST
sort LIST
Sorts the LIST and returns the sorted list value.
If SUBNAME or BLOCK is omitted, "sort"s in stan-
dard string comparison order. If SUBNAME is spec-
ified, it gives the name of a subroutine that
returns an integer less than, equal to, or greater
than "0", depending on how the elements of the
list are to be ordered. (The "<=>" and "cmp"
operators are extremely useful in such routines.)
SUBNAME may be a scalar variable name (unsub-
scripted), in which case the value provides the
name of (or a reference to) the actual subroutine
to use. In place of a SUBNAME, you can provide a
BLOCK as an anonymous, in-line sort subroutine.
HTH
_________
broquaint