Evitare sviste comuni in Perl

Immissione di un errore di battitura o due durante il corso di scrittura di un programma Perl non è raro. Ma quando si tenta di eseguire un programma che contiene un testo-voce di slip-up, Perl solito si confonde e ti dice così segnalando un errore. La reazione naturale per la maggior parte della gente, anche quelli con anni di esperienza di programmazione, è quello di ottenere preoccupato o arrabbiato o sia quando un messaggio di errore compare.

Niente panico. Fate un respiro profondo. Prendere un altro lento, profondo respiro. Scherzi a parte, non si può arrivare alla radice del problema, se siete tutti teso e preoccupato. Non importa quanti anni si programma, si finisce sempre per trovare alcuni errori nel codice che si sta scritto.

Così, ora che siete (si spera!) Un po 'più tranquillo, si può iniziare ad apprezzare il fatto che Perl ha messaggi di errore più utile di qualsiasi altro linguaggio di programmazione. I messaggi non sono sempre proprio sul denaro, ma si può ottenere molto vicino al punto in cui il problema è la ricerca il minimo da parte vostra.

Perl ha una miriade di messaggi di errore, ma alcuni sicuramente sorgere più di altri a causa di alcuni errori di battitura più comuni che tutti sembrano fare. I seguenti errori derivano da minori goofs testo-voce che si può facilmente evitare.

Dimenticare un punto e virgola

Probabilmente il messaggio di errore più comune che si vede durante la programmazione in Perl simile a questa:

# Errore di sintassi, nei pressi di "aperto"
File 'counter1.pl'; Linea 10
# Esecuzione interrotta a causa di errori di compilazione.

È possibile guardare e guardare Linea 10, quello con la dichiarazione aperta, e non si vede nulla di sbagliato. Il trucco è quello di esaminare l'affermazione che precede la dichiarazione aperta e vedere se termina con un punto e virgola. (Perl sa che un'istruzione termina solo quando incontra una virgola.) In questo caso, l'errore è causato da una virgola mancante alla fine della linea 7 del programma:

$ TheFile = "sample.txt"

Dimenticare una virgoletta

Il seguente tipo di messaggio di errore può essere estremamente frustrante se non si conosce di una soluzione rapida:

# Parola Bare trovato dove previsto operator, nei pressi di
# "Open (INFILE, $ TheFile) or die" The "
# (Potrebbe essere una fuga multi-linea "" stringa a partire dal
# Linea 7)
File 'counter1.pl'; Linea 10

Questo errore è simile a dimenticare un punto e virgola; invece, si tratta di un segno di virgolette che è accidentalmente omesso:

$ TheFile = "sample.txt;

In questo caso, Perl ha fatto un buon lavoro di indovinare ciò che è sbagliato, suggerendo che una fuga multi-linea "" stringa sulla linea 7 è il problema, che è appunto a destra.

Entrando una parentesi troppi o troppo pochi

Quando si dispone di un sacco di apertura e di chiusura parentesi in un programma, è facile scivolare uno in più in per caso. Se questo è il caso, è possibile visualizzare un messaggio di Perl che legge qualcosa di simile a questo:

# Errore di sintassi, nei pressi di ") eq"
File 'counter1.pl'; Linea 38
# Errore di sintassi, nei pressi di "}"
File 'counter1.pl'; Linea 42

Qui, Perl non può determinare dove l'errore è esattamente, ma in realtà ottenuto proprio sulla prima ipotesi: Linea 38 contiene una parentesi in più a destra:

if (substr ($ TheLine, $ CharPos, 1)) eq "")

Avere una parentesi troppo pochi in un programma Perl può causare più difficile da trovare problemi:

# Non è possibile utilizzare la voce costante arg sinistra implicita --->,
# Vicino "1}"
File 'counter1.pl'; Linea 39
# Scalar trovato in cui l'operatore prevede, vicino a "$ CharPos"
File 'counter1.pl'; Linea 40
# (Mancante virgola sulla riga precedente?)
# Errore di sintassi, vicino a "$ CharPos"
File 'counter1.pl'; Linea 40

Yarp! Tutto questo è stato prodotto, perché l'ultima parentesi sulla linea 38 è mancante:

if (substr ($ TheLine, $ CharPos, 1) eq ""

Ecco un'altra buona lezione di caccia a errori di battitura: Inizia dove Perl dice che ha trovato un errore. Se non si trova l'errore c'è, salire una riga o due e vedere se il problema è iniziato prima.

Un ultimo consiglio: Fiducia Perl per trovare i semplici errori di battitura per voi (dove possibile), e ricorda che si sta dando tutto l'aiuto che può, che è più che si può dire per molti linguaggi di programmazione.