in reply to Sorting @lines

If all of the values are of the same shape that you indicate(a dotted quad with two numeric and two string elements), something like
@sorted = map { $_->[0] } sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] || $a->[3] cmp $b->[3] || $a->[4] cmp $b->[4] } map { [ $_, split(/\./, $_) ] } @lines;
should do the trick. This applies a Schwartzian transform to build and sort an intermediate representation, with the value being sorted pulled out of the hat by the top map. Note that the first two elements are sorted numerically, and the second two are sorted as alphabetically.