block做参数时其中的变量怎么处理的?

block做参数时其中的变量怎么处理的?

不大明白这样的代码为什么会报错
错误信息:Can't use "my $a" in sort comparison at test.pl line 3.
难道是因为perl认为{}里面的$a $b被绑定到my定义的变量上了?perl到底是怎么对待这种block中的变量的呢?
哪位解释一下,谢谢了

my $a,$b;
for(1..10) {
    sort {$a<=>$b} (2,4,1);
}
perldoc perlvar

# $a
# $b

Special package variables when using sort(), see sort. 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.

我觉得不是说一般block的关系
而是sort里面,$a,$b的特殊性
你不用sort的时候,你my他们也没问题