IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Problème avec le caractère de fin de ligne entre linux et windows


Sujet :

Programmation et administration système Perl

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 106
    Points : 53
    Points
    53
    Par défaut Problème avec le caractère de fin de ligne entre linux et windows
    Bonjour,
    J'ai un problème urgent. Il s'agit d'un fichier que j'ai partagé (via cifs) entre linux et windows. Ce fichier est lu et édité par perl (sur linux) tandis qu'il l'est également par un programme développé en vb6.0.
    Le problème: tandis que mon programme perl lit sans aucun problème le fichier même lorsqu'il est édité par l'autre en vb6.0, l'inverse n'est pas possible. J'ai essayé avec les caractères "\n", "\r\n", mais sans succès.
    Que puis-je faire? Y a-t-il un moyen avec Perl?

    Merci de me répondre.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux facilement convertir ton fichier vers les fins de ligne Windows avec le code suivant (marche sous Windows ou Linux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    open my($file), '<:raw', $filename
      or die "Can't open $filename : $!\n";
    open my($dosfile), '>:raw', "dos_$filename"
      or die "Can't open dos_$filename : $!\n";
     
    while( <$file> ) {
      s/(?<!\r)\n/\r\n/;
      print {$dosfile};
    }
     
    close $file; close $dosfile;
    --
    Jedaï

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 106
    Points : 53
    Points
    53
    Par défaut
    Merci Jedaï,

    Mais au même moment je cherchais et grâce à la doc sur la portabilité de perl trouvé sur http://search.cpan.org/~nwclark/perl...t.pod#Newlines, j'ai fait quelque chose de similaire:
    Avant de traiter une ligne du fichier sous linux(récupéré dans la variable @lines) avec mon code perl, dans la boucle foreach

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $i=0;
    $lines[$i]=~s/\r\n/\n/;
    et avant d'écrire à nouveau le fichier,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $lines[$i].="\r\n";
    Et ça marche.

    Mais je vais prendre le temps de tester ton code aussi.

    Merci

  4. #4
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 106
    Points : 53
    Points
    53
    Par défaut
    Excusez-moi, $i=0 vient avant la boucle foreach.

    Citation Envoyé par Dosseh Voir le message
    Merci Jedaï,

    Mais au même moment je cherchais et grâce à la doc sur la portabilité de perl trouvé sur http://search.cpan.org/~nwclark/perl...t.pod#Newlines, j'ai fait quelque chose de similaire:
    Avant de traiter une ligne du fichier sous linux(récupéré dans la variable @lines) avec mon code perl, dans la boucle foreach


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $i=0;
    $lines[$i]=~s/\r\n/\n/;
    et avant d'écrire à nouveau le fichier,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $lines[$i].="\r\n";
    Et ça marche.

    Mais je vais prendre le temps de tester ton code aussi.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Caractère en fin de ligne avec regsub
    Par sylvain_54 dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 14/08/2008, 18h08
  2. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  3. [SAX] Problème avec les caractères spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/07/2005, 10h07
  4. [ToolTip] Problème avec le caractère "\n"
    Par thomas_strass dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/09/2004, 09h19
  5. problème avec le caractère saut de ligne ...
    Par vbcasimir dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo