in reply to sort empty string

You can use a more complex sort routine. However, any extra code there will be executed for each comparison, O(N log N) times IIRC. As you are using a Schwartzian transform anyway, just make sure that empty strings are mapped to a value that sorts last. E.g. (untested):
@sorted = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { [ (length($all{$_}->[$sortValue])? '0' . $all{$_}->[$sortValue] : '1'), $_ ] } keys %all;