Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Nicolas Leborgne
    Inscrit en
    février 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Leborgne
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : février 2012
    Messages : 58
    Points : 30
    Points
    30

    Par défaut Problème de parsing simple de fichier texte

    Bonjour,

    Depuis hier j'ai repris un script que j'avais laissé il y a quelques mois dont le but, en résumé, est de parser des numéros de téléphones (1 par ligne), et de réaliser ensuite des traitements en fonction.

    Or, impossible de faire fonctionner le parsing de mon fichier texte ligne par ligne.
    Voici pourtant le code que j'utilise et qui me semble correct :

    Code :
    1
    2
    3
    4
    5
    6
    7
     
    open my($file), '<', 'liste.txt';
    while( my $line = <$file> ) 
    {
        chomp($line) ;
        print "$line \n";
    }
    Mon fichier 'liste.txt' étant tout simple :
    Code :
    1
    2
    3
    0130110925
    0231392398
    0475844776
    Enfin, quand j'éxécute mon script 'test.pl', seul le dernier numéro de téléphone s'inscrit.

    Merci de m'éclairer sur ce sujet sûrement tout simple

  2. #2
    Membre chevronné Avatar de Gardyen
    Profil pro
    Inscrit en
    août 2005
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 578
    Points : 758
    Points
    758

    Par défaut

    ce code est correct, j'affiche bien les 3 lignes quand je le teste...
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Expert Confirmé

    Homme Profil pro Laurent R.
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 202
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent R.
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 202
    Points : 2 525
    Points
    2 525

    Par défaut

    Citation Envoyé par Gardyen Voir le message
    ce code est correct, j'affiche bien les 3 lignes quand je le teste...
    Pour moi, il est correct également.

    Peut-être un problème de format du fichier en entrée, en particulier des retours à la ligne. J'ai eu un problème analogue avec un fichier n'était pas compatible avec l'OS sur lequel j'exécutais le traitement (incompatibilité entre Unix et Windows). Sauf qu'au lieu du problème classique des ^M sous Unix, on se retrouvait avec les retours en début de ligne sans les sauts de lignes. Du coup, toutes les lignes s'affichaient successivement et très rapidement sur la même ligne de l'écran et, au final, on ne voyait que la dernière ligne du fichier s'afficher.

    Précise sur quel OS tu exécutes ton programmer et d'où vient ton fichier. Ou met le fichier en pièce jointe.
    Mes articles sur La programmation fonctionnelle en Perl publiés sur ce site:

    ________
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  4. #4
    Nouveau Membre du Club
    Homme Profil pro Nicolas Leborgne
    Inscrit en
    février 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Leborgne
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : février 2012
    Messages : 58
    Points : 30
    Points
    30

    Par défaut

    J'exécute mon script sous Windows.
    Voici mon fichier texte en pièce jointe, ainsi que le script Perl.

    Et en effet, lors de l'exécution de mon script dans une fenêtre dos, seul la dernière ligne s'affiche.

    Merci de m'éclairer, parce que là je ne vois vraiment pas pourquoi cela ne fonctionne pas
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau Membre du Club
    Homme Profil pro Nicolas Leborgne
    Inscrit en
    février 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Leborgne
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : février 2012
    Messages : 58
    Points : 30
    Points
    30

    Par défaut

    En fait, et cela rejoint un peu ce que disait Lolo78, mon fichier texte était en "format Macintosh".
    Du coup j'ai recrée un fichier texte format UNIX, et tout marche très bien

  6. #6
    Expert Confirmé

    Homme Profil pro Laurent R.
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 202
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent R.
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 202
    Points : 2 525
    Points
    2 525

    Par défaut

    Dans ce cas, c'est exactement ce dont je parlais. Le format Mac utilise le retour chariot sans saut de ligne comme séparateur de ligne. Du coup, sous Unix, chaque ligne s'écrit sur la précédente et tu ne vois au final que la dernière.
    Mes articles sur La programmation fonctionnelle en Perl publiés sur ce site:

    ________
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •