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

tjw*_*992 3 perl global-variables lexical-scope

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

Perl的"sort()"函数究竟是什么"$ a"和"$ b"?

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

或者即使没有其他功能使用它们,是否还有其他情况sort()你会使用"$ a"或"$ b"?

编辑:

澄清:

简而言之,问题是"$ a"和"$ b"可以被其他东西使用sort()吗?

我只是想知道他们可以使用的其他情况.我从未见过其他任何东西使用的"$ a"或"$ b",并且想知道除了之外还有其他任何特殊用途sort().

ike*_*ami 6

"$ a"和"$ b"可以被其他东西使用sort()吗?

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

 $ perl -E'$a=123; say $a;'
 123
Run Code Online (Sandbox Code Playgroud)

也就是说,这样做并不是一个好主意.最好使用词法变量,声明$a$b作为词汇变量将使它们无法在sort(或在List :: Util的函数中)使用而不会覆盖our ($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.
Run Code Online (Sandbox Code Playgroud)

  • 我想那个问题就变成了使用$ a或$ b而不是`sort()`之类的东西被认为是错误的编码实践? (4认同)