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 :

Probleme de boucle unless


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Par défaut Probleme de boucle unless
    Bonjour a tous,
    Je voulais savoir si ce que j ai codé est correct et surtout ca fait bien ce que je pense !!

    Voila mon code

    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
    22
    23
     
    unless ((@Champ_location_vide) =~ m/^$/)
                    {
                            foreach (@Champ_location_vide)
                            #
                            {
                                    #On recupere dans l ordre : $1=Nom, $2=@IP
                                    push (@Tab_Champ_location_vide, $1, $2 ) if(/(.*);(\d+\.\d+\.\d+\.\d+);.*;.*;.*;.*;.*;.*;/);
                                    # l'on place dans un tableau
                                    #le push permet de rajouter des lignes dans
                                    #le tableau en fonction du nombre d index matché
                            }
                    #}
                            print Fichier_pour_mail "\n#####################################\n";
                            print Fichier_pour_mail "#  Champ Syslocation     vide      ##\n";
                            print Fichier_pour_mail "#####################################\n";
     
                            for (my $A=0;$A<=($#Tab_Champ_location_vide);$A)
                            {
                                    print Fichier_pour_mail "\n$Tab_Champ_location_vide[$A] $Tab_Champ_location_vide[$A+1]\n";
                                    $A=$A+2;
                            }
                    }
    La ligne unless .... veut bien dire que si le tableau @Champ_location_vide ne contient rien on ne rentre pas dans la boucle ???
    Le probleme c est que meme si il est vide on y rentre alors pourquoi ?

    Merci d avance Jules

  2. #2
    Membre éprouvé Avatar de spirit_epock
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 153
    Par défaut
    Bonjour,

    La ligne unless .... veut bien dire que si le tableau @Champ_location_vide ne contient rien on ne rentre pas dans la boucle ???
    Perdu
    Ton script quoi qu'il se passe va executer l'instruction unless jusqu'à ce que la condition soit vraie.

    Met un if devant pour faire un test
    a+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pourquoi une regex ?

    Ceci fonctionnerait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unless (@toto) {
    	print "vide\n";
    }
    Si @toto est vide, le print s'effectue. Sinon, non.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Par défaut
    Mais ou est le test si c est vide ou non ?
    Que signifit exacteemnt unless ?
    Merci Jules

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Par défaut
    Oupps oublie;

    Et si j ai plusieur variable qui doivent etre vide je l ecris comment ?
    jules

  6. #6
    Invité
    Invité(e)
    Par défaut
    Unless = à moins que.

    Donc, "à moins que le tableau contienne quelque chose, print vide"
    Donc le le tableau contient quelque chose, ne fais pas le print.

    C'est la notion inverse du if.

  7. #7
    Expert confirmé
    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
    Par défaut
    Dans un contexte scalaire (une addition, une condition booléenne...), l'expression "@tableau" renvoie le nombre d'élément du tableau. En Perl 0 est faux et toute autre nombre est vrai, donc "@tableau" sera faux si @tableau est vide. Donc unless( @tableau ) signifie "sauf si @tableau n'est pas vide" soit "si @tableau est vide".

    --
    Jedaï

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

Discussions similaires

  1. Probleme de boucle a s arracher les cheuveux
    Par calimero642 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2006, 14h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. [Language]Problème de boucle
    Par marc_dd dans le forum Langage
    Réponses: 11
    Dernier message: 06/10/2005, 14h24
  4. Problem de boucle.....
    Par skad dans le forum C++
    Réponses: 6
    Dernier message: 29/09/2005, 16h28
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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