Sintomo: $c="foo";
genera un errore e non lo è $b="foo";
.Perl, comportamento variabile, discrepanza basata su nome
Il mio script è letteralmente a 3 righe. Quanto segue non produce errori o avvisi
use strict;
$b = "foo";
print $b;
ma se il cambiamento per quanto segue, ho un "richiede esplicito nome del pacchetto" errore.
use strict;
$c = "foo";
print $c;
,
Capisco che use strict;
richiede le variabili devono essere dichiarate prima dell'uso, e cambiando $c = "foo";
-my $c = "foo";
effettivamente evitare l'errore, ma questo da solo non spiega la discrepanza.
Qualcuno può fare un po 'di luce qui? Sono sicuro che mi manca qualcosa di ovvio. Sto eseguendo Strawberry Perl v5.16.3 in Windows 7 x64. Sto modificando in NPP ed eseguendo i miei script dalla riga di comando, tramite c:\strawberry> perl test.pl
A causa del loro significato speciale per 'sort', non si dovrebbe mai usare' $ un 'e' $ b' nel tuo codice in generale, anche scontando questa differenza di comportamento che hai trovato. – DVK
Sembra una buona abitudine, grazie DVK. –