Mi sembra un errore di logica. Non e` che volevi scrivere questo?Che puo` essere scritto:codice:while ($r = <IN> ) { $f = substr( $r, 3, 1); if ($f eq ".") { $r =~ s/\./;/; } print OUT $r; }PS. Non ricordo se davanti al ; della seconda parte della RE, e` necessario un backslashcodice:while ($r = <IN> ) { $r =~ s/^(.{3})\.(.+)$/$1;$2/; print OUT $r; }