in reply to sorting an array with mixed elements...

sort takes a block of code in which $a and $b get set to various elements of your list and compared to one another to find the sort order. (See the "spaceship operator" in perlop for how <=> works.)

Inside the sort block, split is used to turn each colon-separated string into a list. The first element of each list (subscript zero) is then examined for the sort.

Update: Turns out that perlop doesn't actually call it the "spaceship operator." :( You have to search for the far more mundane "equality operators" section.