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 :

Aide parseur perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut Aide parseur perl
    Bonjour,

    J'aurais besoin d'un coup de main sur un script en perl. (Je suis débutant)

    Voilà mon fichier :

    --------------------------------------------------------
    Stat : OK
    Code : 5C9 761 775 179
    78D 791 795 17D
    8A5 8AD 8B5 1BD

    Stat : OK
    Code : 25C9 1741 1774

    Offline : yes
    Code : 2529 1T41 174

    ---------------------------------------------------------
    J'aimerai récupérer la ligne Code avec les identifiants 5C9 761 ...

    comme ça :

    5C9
    761
    775
    179
    78D
    791
    795
    17D
    8A5
    8AD
    8B5
    1BD
    25C9
    1741
    1774
    2529
    1T41
    174
    Voici mon script mais ça ne fonctionne pas
    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
     
    line: while (<>) {
            chomp;
     
            if (/Code/) {
                    while($_ ne ''){
     
                     my @h = split(' ',$_);
     
                            foreach my $i ($[ .. $#h) {
     
                                    if ($h[$i] !~ 'Code|:') {
                                     print "$h[$i]\n";
                                    }
                            }
     
                            last line if ( /^$/)
     
                    }
            }
    }
    Le script boucle , j'aimerai qu'il passe au prochain Code lorsqu'il rencontre une ligne vide.

    quelqu'un peut il m'aider ?

    merci.

  2. #2
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    La condition de ton while le plus interne ne peut jamais devenir fausse, parce qu'à aucun moment la valeur de $_ ne change.
    Pourquoi t'embêtes-tu à utiliser la variable $[ au lieu de mettre zéro, comme tout le monde ? Voire utiliser directement ton tableau @h comme argument du foreach : Perl n'est pas C, pas besoin de passer par un indice pour parcourir un tableau.

    Et surtout, utilises les balises CODE quand tu veux montrer du code. C'est le symbole # que tu vois dans l'interface de saisie ou, si tu veux le taper à la main : [ code](ton code)[ /code] (en virant les espaces après [).

  3. #3
    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 : 59
    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
    Par défaut
    <HS>

    Schmorgluck, pour afficher des balises dans un post, tu peux utiliser les balises [noparse] ... [/noparse].

    Exemple :

    [noparse][code]( mon code )[/code][/noparse]

    donne :
    [code]( mon code )[/code]
    </HS>

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut
    Comment on fait dans se cas, pour arrêter la boucle ?

  5. #5
    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 : 59
    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
    Par défaut
    La fonction last est également utilisable dans une boucle foreach.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Il faudrait enlever la seconde boucle à l'intérieur de la première, elle complique inutilement.
    A la place, faire simplement une variable qui indique si on est dans une section Code ou pas et qui peut être mise à jour à chaque nouvelle ligne lue du fichier en fonction du contenu de cette ligne.

Discussions similaires

  1. Besoin d'aide script perl MERCI
    Par la_star160 dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2008, 12h36
  2. demande d'aide en perl
    Par nanouchka dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2006, 22h04
  3. Aide script perl
    Par donmamio dans le forum Langage
    Réponses: 10
    Dernier message: 08/08/2006, 17h34
  4. Changer son pseudo msn à l'aide de Perl
    Par FoxDragon dans le forum Web
    Réponses: 1
    Dernier message: 05/04/2006, 08h33
  5. automatiser un programme à l'aide de perl
    Par moitoujours dans le forum Langage
    Réponses: 8
    Dernier message: 15/03/2006, 20h10

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