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.