2010-03-10 122 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)

相關問題