in reply to Why doesn't strict complain here?

$a and $b are special vars (you really shouldn't use them). From perlvar:

Special package variables when using sort(), see "sort" in perlfunc. Because of this specialness $a and $b don't need to be declared (using use vars, or our()) even when using the "strict 'vars'" pragma. Don't lexicalize them with "my $a" or "my $b" if you want to be able to use them in the sort() comparison block or function.

-derby