2010-03-10 11 views
5

Dlaczego nie ma błędu wydane przez strict:

use strict; 

$a = $a + 1; 

Odpowiedz

14

$ ai $ b są specjalne globalne używane przez sort, więc oni zawsze określone. Spróbuj zamiast tego za pomocą $ c, a otrzymasz błąd.

+7

Należy zauważyć, że oznacza to, że używanie $ a i $ b do innych celów jest naprawdę złym pomysłem. (Używanie zmiennej o nazwie $ c jest również złe, ale mniej iz innych powodów). – ysth

5

$a to specjalna zmienna globalna. Nie musi być zadeklarowana. Zobacz perldoc perlvar.

2

W Perlu jest kilka zmiennych globalnych. Tutaj $a i $b są używane w funkcji sort.

myślę, można zauważyć, jak w tym zdaniu:

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

Chociaż strict nie narzekają specjalnych $a i $b zmiennych perlcritic wykryje ich wykorzystania:

Magii zmienne powinny być przypisane jako "lokalne" ... (stopień ważności: 4)

Powiązane problemy