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

Langage Perl Discussion :

Problème saut de ligne


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 195
    Points : 121
    Points
    121
    Par défaut Problème saut de ligne
    Bonjour,

    Je coince sur un sujet tout bête, je prépare un petit script pour tester en ping une liste de machine.
    Les IP sont dans un fichier fichier.txt qui contien:

    8.8.8.8
    212.27.48.10
    7.7.7.7

    Le problème est un saut de ligne mystérieux après l'IP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    use strict;
    use warnings;
    use Data::Dumper;
    use feature 'say';
    use Data::Dumper;
    no warnings 'uninitialized';
    use Net::Ping;
     
    my $p = Net::Ping->new("icmp");
    while (my $host = <>)
    	{
    	chomp;
    	if ($p->ping($host, 2)) {
    		print "$host is reachable.\n";
    		} else {
    		print "$host is NOT reachable\n";
    		}
        sleep(1);
    	}
    $p->close();

    Résultat:
    $ perl test.pl fichier.txt
    8.8.8.8
    is reachable.
    212.27.48.10
    is reachable.
    7.7.7.7 is NOT reachable

    En modifiant chomp par chomp($host), les @IP joignable ne s'affiche plus


    Résultat:

    $ perl test.pl fichier.txt
    is reachable.
    is reachable.
    7.7.7.7 is NOT reachable


    je fais les test sous cygwin, perl version 5.22

    Merci pour la piste/

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Sans doute un problème de fin de lignes Windows sous Linux, ou quelque chose comme ça. Le chomp retire le caractère saut de ligne (\n) mais pas le caractère retour chariot (\r); du coup, ça revient au début de la ligne et écrase ce qui précède.

    Essaie de remplacer:
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $host =~ s/[\r\n]//g;

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 195
    Points : 121
    Points
    121
    Par défaut
    Merci Lolo !

    Ca fonctionne avec la substitution.

    j'avais crée un autre fichier en tapant directement les adresses soupçonnant ce problème, et donc que entrée en fin de ligne (sur notepad++), mais j'avais le même résultat.

    Il y a un moyen de "voir" les "\n" ou "\n\r" en lisant les lignes ? Ou ca reste de le déduction ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par caramon _majere Voir le message
    Il y a un moyen de "voir" les "\n" ou "\n\r" en lisant les lignes ? Ou ca reste de le déduction ?
    Si tu es sous Cygwin, tu tapes la commande suivant dans une console :
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 195
    Points : 121
    Points
    121
    Par défaut
    Ca fonctionne, j'ai appris une commande Unix aujourd'hui

    $ od -tc fichier.txt
    0000000 8 . 8 . 8 . 8 \r \n 2 1 2 . 2 7 .
    0000020 4 8 . 1 0 \r \n 7 . 7 . 7 . 7
    0000036

  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Sinon, il y a aussi l'option -ve de la commande cat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat -ve nom_fic.txt
    qui affiche les caractères fins de lignes (et le retour chariot dos s'affiche comme un "^M" (suivi d'un "$" pour le caractère new line).

    Ou encore ouvrir le fichier avec vi, ils seront aussi affichés.

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Et moi, j'ai appris une option d'une commande Unix aujourd'hui
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

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

Discussions similaires

  1. Problème saut de ligne dans mes champs
    Par xess91 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2010, 16h59
  2. Problème saut de lignes !
    Par lami_dta_femme dans le forum Mise en page CSS
    Réponses: 17
    Dernier message: 30/04/2008, 00h05
  3. [VBA] Import Excel: problème saut de ligne
    Par davasm dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/11/2007, 09h05
  4. [Tableaux] Problème saut de ligne
    Par @lexx dans le forum Langage
    Réponses: 14
    Dernier message: 26/03/2006, 15h20
  5. Problème saut de ligne dans un tableau
    Par talggir dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2005, 15h10

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