Precedente: Istruzione return, Su: Funzioni definite dall'utente [Contenuti][Indice]
awk
è un linguaggio molto fluido.
È possible che awk
non sia in grado di stabilire se un
identificativo rappresenta una variabile scalare o un vettore,
prima dell’effettiva esecuzione di un programma.
Ecco un esempio di programma commentato:
function pippo(a) { a[1] = 1 # il parametro è un vettore } BEGIN { b = 1 pippo(b) # non valido: errore fatale, tipi variabile in conflitto pippo(x) # x non inizializzato, diventa un vettore dinamicamente x = 1 # a questo punto, non permesso: errore in esecuzione }
In questo esempio, la prima chiamata a pippo()
genera
un errore fatale, quindi awk
non arriverà a segnalare il secondo
errore. Se si commenta la prima chiamata e si riesegue il
programma, a quel punto awk
terminerà con un messaggio
relativo al secondo errore.
Solitamente queste cose non causano grossi problemi, ma è bene
esserne a conoscenza.