2010-03-10 116 views
5

为什么没有通过strict发出错误:

use strict; 

$a = $a + 1; 

回答

14

$和$ b是由sort使用特殊的全局变量,所以他们总是被定义。尝试用$ c代替,你会得到一个错误。

+7

请注意,这意味着使用$ a和$ b用于其他目的是一个非常糟糕的主意。 (使用一个名为$ c的变量也是不好的,但不太如此以及其他原因。) – ysth 2010-03-10 11:56:17

5

$a是一个特殊的全局变量。它不需要声明。请参阅perldoc perlvar

2

在Perl中有一些全局变量。这里$a$b用于sort函数。

我想你可能已经注意到了,像这样的说法:

sort { $a <=> $b } @array_name ; 
6

虽然strict不抱怨的特殊$a$b变量, perlcritic会发现它们的用法:

魔术应将变量分配为 “本地”...(严重性:4)

相关问题