As duas formas — «eu perdoei-lhe» e «eu perdoei-o» — são possíveis.
Se tivermos como referência o facto de o verbo perdoar significar «conceder perdão a», verificamos que a construção implica que se perdoa alguma coisa (complemento direto) a alguém (complemento indireto). Por exemplo:
«O João perdoou a dívida ao amigo.»
«A dívida, o João perdoou-a ao amigo.»
«Ao amigo, o João perdoou-lhe a dívida.»
Por isso, não há dúvida de que a forma «eu perdoei-lhe» está correta, e, segundo os gramáticos Cunha e Cintra, essa é a forma culta aconselhável, pois dizem-nos que o verbo perdoar, «na língua culta de hoje, constrói-se preferentemente com objeto/complemento direto de "coisa" e objeto/complemento indireto de "pessoa"» (Nova Gramática do Português Contemporâneo, Lisboa, Sá da Costa, 2001, p. 527), apresentando-nos os seguintes exemplos:
«Crimes da terra, como perdoá-los?» (Carlos Drummond de Andrade, Reunião, 78.)
«Ela perdoara-lhe.» (Joaquim Paço d`Arcos, Arcos, 18.)
«Perdoem-lhe o riso.» (Machado de Assis, Obra Completa, 600.)
No entanto, os mesmos gramáticos alertam-nos para a ocorrência da «construção com objeto/complemento direto de "pessoa", normal no português antigo e médio, [que] é corrente na linguagem coloquial brasileira, razão pela qual alguns escritores atuais não têm dúvida em acolhê-la» (idem, p. 528), conforme se pode verificar através das respetivas citações:
«Ela é Maria, e Deus a perdoa por não odiar o mar.» (Adonias Filho, Luanda, Beira, Bahia, 110.)