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 :

valeur par défaut perso


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut valeur par défaut perso
    bonjour
    je souhaite fixer une valeur par défaut à une variable si aucune autre valeur n'a été spécifié
    pour cela je lis un fichier rempli par un utilisateur et si un champ spécifique n'est pas rempli alors j'assigne ma valeur par défaut à ma variable...seulement voilà avec le code que j'ai essayé cela ne marche pas...

    pour info je découpe une ligne dans un fichier qui ressemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SWITCH robert 00:11:22:33:44:55
    SWITCH robert 00:aa:bb:cc:dd:ee allied telesyn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @switch = split('\s+',$_,4);
    $switch_name = $switch[1];
    $mac = $switch[2];
    if (@switch = 3) {$type = cisco;}
    else {$type = $switch[3];}
    dans ce cas ma variable $type prend la valeur cisco à chaque tour

    j'ai aussi essayer comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @switch = split('\s+',$_,4);
    $switch_name = $switch[1];
    $mac = $switch[2];
    if ($switch[3] =~ /\s+/) { $type = cisco;}
    else {$type = $switch[3]
    et ici $type prend la valeur cisco uniquement au deuxième tour et ne vaut rien au premier

    si vous m'avez suivi, idéalement il faudrait d'après les lignes que je découpe ci dessus, que $type prenne cisco comme valeur au premier tour puis allied telesyn au second...

    ou me suis je trompé??
    merci de votre aide

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: valeur par défaut perso
    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @switch = split('\s+',$_,4);
    $switch_name = $switch[1];
    $mac = $switch[2];
    $type = (defined ($switch[3])) ? $switch[3] : "cisco";
    Finalement, il suffit simplement de vérifier si le split a fourni un "$switch[3]" valide (défini).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut
    et ben c'est un peu mieux mais c'est pas encore ça apparemment..
    je print $type à chaque tour de boucle mais au premier tour elle ne prend aucune valeur, quant au deuxième tour elle à en effet la bonne valeur attendu...
    ou passe le cisco? j'avous être un peu perdu étant débutant de tout juste 3semaines de perl

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut
    et ben voilà en fait l'erreur , si tant est qu'il y en ait vraiment une, se situe au niveau du split...
    étant donné que je spécifiais que j'attendais 4 champs dans mon découpage cela mettait un peu la panique puisqu'il découpait toujours avec 4 champs donc je n'en avais jamais 3

  5. #5
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par bilout
    et ben voilà en fait l'erreur , si tant est qu'il y en ait vraiment une, se situe au niveau du split...
    étant donné que je spécifiais que j'attendais 4 champs dans mon découpage cela mettait un peu la panique puisqu'il découpait toujours avec 4 champs donc je n'en avais jamais 3
    Je ne crois pas, non.

    Le dernier paramètre de split est une limite, pas un nombre de champs. Ainsi, tu récupéreras 4 champs au maximum, mais tu peux en avoir moins ... je le prouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $a="a b c";
    @t=split(/\s+/, $a, 4);
    print @t." elements recupérés.\n";
    $a="a b c d e f";
    @t=split(/\s+/, $a, 4);
    print @t." elements recupérés.\n";
    Il te faut donc continuer à chercher l'erreur

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 896
    Par défaut
    Juste une remarque, le tag Résolu se met automatiquement en cliquant en bas à gauche du thread sur le bouton

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut
    ok pour la balise "résolu" je pensé qu'il fallait éditer le post à chaque fois, apparemment cela change suivant les forums...à moins que je dise une bêtise

    pour ce qui est de mon problème je ne mets certainement pas en doute tes compétences en perl bien supérieur au mienne 2Eurocents mais le fait d'avoir enlevé ce dernier champ à résolu mon problème... mais si tu me dis que ça devrait marcher je ferais une recherche plus appronfondi...bonne continuation

  8. #8
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par bilout
    pour ce qui est de mon problème je ne mets certainement pas en doute tes compétences en perl bien supérieur au mienne 2Eurocents
    Rassure-toi, je ne le prendrais pas mal. On commence tous un jour ... et il y a encore tellement de choses que je n'ai jamais fait en Perl que je me considère toujours comme débutant sur de nombreux sujets

    Citation Envoyé par bilout
    mais le fait d'avoir enlevé ce dernier champ à résolu mon problème... mais si tu me dis que ça devrait marcher je ferais une recherche plus appronfondi...bonne continuation
    Pour ce qui est de ton problème, j'en ai trouvé la cause, aussi.

    C'est qu'en fait, la variable $_ ,sur laquelle porte ton split, contient des caractères de séparation entre la dernière valeur et le saut de ligne ou la fin de chaine. Du coup, le split récupère des champs vides surnuméraires qui perturbent le nombre de valeurs récupérées.

    Ta limite au split n'y est donc effectivement pour rien et peut être conservée

    Tu peux t'en tirer simplement avec un :juste avant le split, pour nettoyer les séparateurs finaux.

    Bon Perl 8)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut
    donc si je comprends bien la ligne de code que tu m'a donné permet de supprimer tous les espaces, tab et autres vides situé en fin de ligne...??
    effectivement avec cette ligne et en ayant remis le nombre max de champ souhaité cela continu à fonctionner
    encore merci pour ton aide
    c'est pas mal le perl comme langage de prog surtout pour les strings et les fichiers mais quand même dès fois la syntaxe est vraiment tordu je trouve
    bonne continuation

  10. #10
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par bilout
    donc si je comprends bien la ligne de code que tu m'a donné permet de supprimer tous les espaces, tab et autres vides situé en fin de ligne...??
    Tout à fait.
    Il y a certainement bien d'autres façon de le faire ...

    Citation Envoyé par bilout
    effectivement avec cette ligne et en ayant remis le nombre max de champ souhaité cela continu à fonctionner
    Bonne nouvelle

    Citation Envoyé par bilout
    c'est pas mal le perl comme langage de prog surtout pour les strings et les fichiers mais quand même dès fois la syntaxe est vraiment tordu je trouve
    Pour la petite histoire, quand j'ai commencé Perl pour la première fois, j'ai trouvé ça vraiment tordu. J'ai abandonné dès que j'ai pu ... Puis, j'ai dû m'y remettre une autre fois ... et j'ai re-abandonné ... Et au troisième essai, peut être parceque j'essayais de moi-même, et pas avec la pression d'un projet, et tout d'un coup j'ai compris plein de trucs. C'est devenu brutalement beaucoup plus simple et naturel.

    C'est tous le mal que je te souhaite
    Bonne continuation.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2004, 17h46
  2. Valeur par défaut dun DBLookupcombobox
    Par lol_adele dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 09h08
  3. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52
  4. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  5. Unique + valeur par défaut
    Par ketalie dans le forum Outils
    Réponses: 4
    Dernier message: 02/07/2003, 15h29

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