Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Langage
Langage Toutes vos questions sur les scripts Perl en général. Avant de poster, veuillez consulter les FAQs perl, les cours Perl, les critiques de livres et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 15h19   #1
nikko49
Membre à l'essai
 
Homme Nicolas Leborgne
Inscription : février 2012
Messages : 39
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 : 39
Points : 24
Points : 24
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
nikko49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 15h27   #2
Gardyen
Membre chevronné
 
Avatar de Gardyen
 
Inscription : août 2005
Messages : 494
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France

Informations forums :
Inscription : août 2005
Messages : 494
Points : 676
Points : 676
Envoyer un message via ICQ à Gardyen
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
Gardyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h03   #3
Lolo78
Membre Expert
 
Homme Laurent R.
Conseil - Consultant en systèmes d'information
Inscription : mai 2012
Messages : 568
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 : 568
Points : 1 118
Points : 1 118
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.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.
Lolo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2013, 16h17   #4
nikko49
Membre à l'essai
 
Homme Nicolas Leborgne
Inscription : février 2012
Messages : 39
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 : 39
Points : 24
Points : 24
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
Type de fichier : txt liste.txt (32 octets, 0 affichages)
Type de fichier : pl test.pl (112 octets, 1 affichages)
nikko49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2013, 17h02   #5
nikko49
Membre à l'essai
 
Homme Nicolas Leborgne
Inscription : février 2012
Messages : 39
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 : 39
Points : 24
Points : 24
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
nikko49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 08h25   #6
Lolo78
Membre Expert
 
Homme Laurent R.
Conseil - Consultant en systèmes d'information
Inscription : mai 2012
Messages : 568
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 : 568
Points : 1 118
Points : 1 118
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.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.
Lolo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h21.


 
 
 
 
Partenaires

Hébergement Web