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 :

foreach, $_ et index


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut foreach, $_ et index
    Bonjour,

    je souhaite supprimer des lignes dans un tableau. Pour cela, je le parcours avec foreach et j'aimerai utiliser delete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (@fileList){
       if( $_ =~ /PATTERN/gos){
           delete $fileList[index de $_];   
       }
    }
    Or delete fonctionne avec un index. comment récupérer cet index? Je voudrais éviter le for et eviter de changer d'algo (style ne recopier que les lignes nécessaires dans un second tableau)

    merci

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Salut !

    C'est pour les hash ta fonction

    A vu de nez je dirais que c'est ca qu'il te faut comme boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $i=0;
    foreach (@fileList){
       splice (@fileList,$i,1) if /PATTERN/gos;
       $i++;
    }

    @+
    Mr6

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    regarde à cette adresse,

    http://perldoc.perl.org/functions/delete.html

    il précise qu'on peut l'utiliser pour les tableaux

    delete EXPR

    Given an expression that specifies a hash element, array element, \nhash slice, or array slice, deletes the specified element(s) from the hash or array.

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    J'avais pas bien lu en effet.

    Hé bien tu fais comme c'est indiqué sur la doc alors, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach my $i (0..$#fileList){
       delete $fileList[$i] if $fileList[$i]=~/PATTERN/gos;
       $i++;
    }
    @+
    Mr6

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    oui tu as raison j'avais pas bien lu aussi mais je voulais éviter un index sinon j'aurai utiliser un for sans me poser de question.

    Pour pousser un peu jusqu'au bout, je vais reformuler ma question :

    Est-il possible d'obtenir l'index du tableau lorsqu'on effectue un parcours grâce à un foreach avec la variable spéciale $_ ?

  6. #6
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    heuuufff.... jamais regardé !

  7. #7
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Allez, faisons crado :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $list = "@fileList";
    $list =~ s/PATTERN//g;
    @fileList = split /\s+/,$list;
    beuuuurk !

    @+
    Mr6

  8. #8
    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
    Citation Envoyé par Mr6 Voir le message
    Allez, faisons crado :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $list = "@fileList";
    $list =~ s/PATTERN//g;
    @fileList = split /\s+/,$list;
    beuuuurk !

    @+
    Mr6
    Allez, soyons propre et utilisons une instruction vraiment faite pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @fileList = grep { not m/pattern/g } @fileList;
    Et c'est plus court en plus !

    --
    Jedaï

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

Discussions similaires

  1. [JSTL] Foreach, affichage d'un élèment à partir d'un index
    Par raff87 dans le forum Taglibs
    Réponses: 5
    Dernier message: 09/04/2009, 16h49
  2. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  3. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47
  4. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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