2010-03-10 6 views
5

¿Por qué hay ningún error emitido por strict:

use strict; 

$a = $a + 1; 

Respuesta

14

$ ay $ b son variables globales especiales utilizados por sort, por lo que siempre estamos definido. Pruébalo con $ c en su lugar y obtendrás un error.

+7

Tenga en cuenta que esto significa que usar $ a y $ b para otros fines es una muy mala idea. (Usar una variable llamada $ c también es malo, pero no tanto y por otros motivos). – ysth

5

$a es una variable global especial. No necesita ser declarado. Ver perldoc perlvar.

2

En Perl hay algunas variables globales. Aquí $a y $b se usan en la función sort.

creo que podría haber dado cuenta, al igual que en esta declaración:

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

Aunque strict no se quejan de los especiales variables de $a y $b, perlcritic detectará su uso:

magia las variables se deben asignar como "local" ... (Gravedad: 4)

Cuestiones relacionadas