That's not quite right: your method sorts case-sensitively (uppercase first) on the first letter, and otherwise sorts case-insensitively. Whether the OP wanted the sort to be otherwise case-insensitive is not clear, but he did ask for lowercase initial letters to be first.
Here's a fix:
sort {
$b=~/^[a-z]/ <=> $a=~/^[a-z]/
or lc($a) cmp lc($b)
}
The PerlMonk tr/// Advocate