Ecco l'esempio. Sto scrivendo uno script che ha il compito di parsare un file di testo e creare una struttura dati (un hash) complessina. Come al solito mi illudo che siano sufficienti idee chiare per svluppare rapidamente. Come al solito mi sbaglio. I bug si nascondono all'inverosimile.
Tant'e' vero che la struttura dati si popola adeguatamente fino ad un certo punto del file parsato, poi si incasina tutto. Ma perche'? Veramente ci sbatto un'ora per capirlo.
Poi di colpo vedo questa riga, gia' vista piu' volte:
$row =~ /^\?(\d)+\.\s+(.+)/che in realta' dovrebbe essere
$row =~ /^\?(\d+)\.\s+(.+)/Un piccolissimo scambio e' succede un casino immane. Quando la struttura dati dovrebbe popolarsi con un certo indice di due o piu' cifre '(\d+)', succede il caos perche' la stessa struttura si popola con indice ad una cifra (\d)+. In realta' l'indice e' catturato correttamente nell'espressione, ma le parentesi dichiarano quale parte dell'indice va memorizzata (e poi utilizzata nel popolamento della struttura), nel primo caso una cifra, nel secondo tutte.
Produttivita' dell'ultima ora: bassa, molto bassa
Nessun commento:
Posta un commento