Occorre prima definire cosa e` la "fine riga". I tre piu` diffusi sistemi (PC Win, Linux, Mac), usano tre codifiche diverse: rispettivamente: CR-LF (0d0a), LF(0a), CR(0d).

Comunque se e` quello il problema, basta modificare la RE:
/^\r?(.{3})\.(.+)$/$1;$2/

Oppure essere un po' elastici nel conto dei caratteri (se possibile per il tipo di dati):
/^([^\.]{2-4})\.(.+)$/$1;$2/

Oppure essere elastici al massimo (questo forse e` troppo):
/\./;/


In alternativa si puo` trasformare tutte le coppie CR-LF in qualsiasi modo mescolate o dda sole in uno standard.
Pero` allora occorer leggere prima tutto il file in una variabile, ed applicare questa RE:
s/[\r\n]*/\n/gr (mi pare che sia /r per non considerare gli acapo)