PERL 5 Caractère ^M indésirable

Bonjour,

En Perl 5.20, avec use 5.010
Sous Jessie

j’ouvre un fichier en lecture et un en écriture.
je capture chaque ligne du 1er et les écrit sur le second.

Je leur applique chomp

  • Mais si je n’applique pas chomp, le pb persiste (en plus d’un pb de lignes blanches)-
    Les lignes modifiées font ce que j’en attend.
    Les lignes simplement copiées (par print $f_sortie $ligne\n ou par say $f_sortie $ligne se terminent par ^M (affiché ainsi sous vim).

Savez vous s’il existe-t-il une fonction, un module ou un pragma qui permette d’ imprimer avec le format d’origine, sans ce ^M ?

Merci

Apparemment ^M est \r, donc un retour charriot. Sous Linux/Unix, la fin de ligne est marquée par \n, sous Windows (sauf erreur de ma part), par \r\n. Ton fichier a été créé sous Windows ?
Je connais mal Perl, mais sous Python tu aurais eu le même comportement, et tu aurais dû utiliser line.rstrip() pour éliminer les caractères spéciaux de fin de ligne.

Oui, j’avais bien compris cela.
J’ai pu déverminer mon fichier avec dos2unix, mais alors le fichier résultat semble réduit par rapport à l’original ( wc -w trouve moins de mots, avec autant de lignes)

Dans la version non déverminée, il y a autant de mots .

Dans les 2 cas il y a autant de ligne.

Il s’agit d’un fichier XML. J’ignore si ces différences auront un impact sur le logiciel (privatif) qui l’utilisera, mais aucun test n’est possible avant de présenter au client de mon aimable correspondant, demain, ce travail (plusieurs jours de compilation non-stop sur l’une des machines les plus musclées du moment; c’est pas pour moi (je le jure !).

Merci SEB-KSL pour ton aide.

EDIT

J’ai bien tenté un s/\r\n/\n/ , sans résultat: le ^M persiste

A défaut d’explication, la solution:

marche (avec la même réduction d’octets) alors que:

ne marche pas. Ceci est un mystère pour moi.

Je laisse ouvert encore quelques jours, au cas où quelqu’un passerait par là qui aurait une explication.

EDIT:
Suite des infos.

  1. fichier «nettoyé» par regex ou par dos2unix:
    Apparemment, d’avoir supprimé sauvagement le ^M empêcherait l’ouverture dans certains éditeurs.

  2. fichier avec des lignes se terminant par ^M:
    D’autre part, la simple copie du code avec ^M sur le fichier d’origine a suffi à corriger le problème. Pour moi, le mystère s’épaissit