在Perl中,“$a”和“$b”在sort()函数之外有什么特殊用途吗?

前几天我问了一个关于在Perl的sort()函数中使用“$a”和“$b”的问题:

What exactly are “$a” and “$b” in Perl’s “sort()” function?

我现在有一个跟进问题.是“$a”和“$b”仅由sort()使用,还是有任何其他Perl函数利用这些特殊的全局变量?

或者即使没有其他功能使用它们,在sort()之外是否有任何情况你会使用“$a”或“$b”?

编辑:

澄清:

简而言之,问题是除了sort()之外,还可以使用“$a”和“$b”吗?

我很想知道它们可以用于其他什么情况.我从未见过其他任何东西使用的“$a”或“$b”,并且想知道sort()之外还有其他特殊用途.

最佳答案

can “$a” and “$b” be used by something other than sort()?

正如已经解释过的那样,$a和$b没什么特别的(除了它们是预先声明的).询问普通变量是否可以被某个函数使用而不是一个函数是没有意义的.这是$a被不合格的东西使用:

 $perl -E'$a=123; say $a;'
 123

也就是说,这样做并不是一个好主意.最好是use lexical variables,并声明$a或$b作为词汇变量将使它们无法在sort(或在List :: Util的函数中)使用而不会覆盖我们的($a,$b);.

$perl -e'sub foo { my ($a) = @_; "..."; sort { $a cmp $b } @a; "..." }'
Can't use "my $a" in sort comparison at -e line 1.

转载注明原文:在Perl中,“$a”和“$b”在sort()函数之外有什么特殊用途吗? - 代码日志