Ciao Shishii,
prima mi spiego meglio e poi posto anche il codice.
Lo script che sto facendo serve a calcolare il codice fiscale. Nell'algoritmo per il calcolo del cod. fis. l'ultima lettera, definita lettera di controllo, si deve calcolare seguendo una stupida procedura che consiste nel prendere i caratteri pari e quelli dispari del codice che è stato ottenuto fino a quel momento e confrontarli con 2 tabelle. Le tabelle sono fatte tipo così: (a=1 b=2 c=3 etc, etc.). Dunque, ad ogni carattere (che può essere una lettera oppure un numero) bisogna associare la corrispondente cifra riportata in tabella e poi effettuare altre operazioni.
Io ho riportato le tabelle in un hash che è fatto così:
%tab_a=('A'=>'1',
'B'=>'2',
etc, etc);
invece i caratteri pari e dispari si trovano in un unico array. Nel momento in cui arrivo a calcolare la lettera di controllo devo prendere i singoli elementi dell'array e confrontarli con le due tabelle di cui parlavo sopra, in modo da ottenere tanti numeri quanti sono i caratteri.
Per fare questo uso la seguente subroutine (non la posto tutta perchè tanto è inutile):
sub calcolo_lettera_controllo{
#controlla i caratteri pari
while (($chiave, $valore)=each(%tab_a)){
if ($array[1] == $chiave){
$valore=$corrispondenza1;
}
if ($array[3] == $chiave){
$valore=$corrispondenza2;
}
etc.etc.
}
}
La necessità di portare il valore in una nuova variabile è data dal fatto che per il calcolo definitivo della lettera di controllo devo sommare i numeri ottenuti dal confronto dei caratteri cn la tabella.
Quanto mi dicevi in merito a eq al posto di == nell'if... ho provato a cambiare == con eq ma cmq nn ottengo alcun risultato.
Ciao,
zeno78
P.S.Grazie per la disponibilità.