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 :

Perl, bases, lister rép et comparaisons de fichiers


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut Perl, bases, lister rép et comparaisons de fichiers
    Bonjour,

    Je n'ai pas trouvé réponse en recherchant sur substr dans le forum.

    Mon problème est :

    J'ai des chaines de caractères, genre "123456.jpg" ou "987654321.eps" et je souhaiterais comparer les chiffres, donc la chaine avant les extensions.
    Je souhaiterais récupérer 123456 et 987654321 pour faire mes tests.

    J'espère avoir était clair.

    Le travail global porte en fait sur une comparaison de deux dossiers comportant des images.
    L'un des images_HD (haute qualité) et l'autre des images_BD (basse qualité).
    Hors les images_HD peuvent être au format eps ou jpg contrairement au images_BD qui ne sont que en jpg.
    Et au final, si mon image HD n'est pas présente dans le dossier image BD, je la compresse et la met dans images BD.

    Et là en expliquant la globalité du travail j'ai embrouillé tout le monde ;-)

    Merci.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Pourquoi ne pas faire une expression régulière dessus.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my @MesChaines = ("123456.jpg", "987654321.eps");
    foreach my $Fichier ( @MesChaines ) {
      if ( $Fichier =~ m{(.+)\.\w+$} ) {
        print "Nom fichier : $1\n";
      } 
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Ça réponds à ce que je voulais.
    Merci.

    Pourrais-je avoir une explication sur la syntaxe utilisée ?
    Je rencontre ça depuis un moment mais n'y comprends rien.
    Désolé, je suis novice !

    Merci.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Déclaration d'un tableau contenant mes fichiers
    my @MesChaines = ("123456.jpg", "987654321.eps");
     
    # Parcours du tableau case par case
    foreach my $Fichier ( @MesChaines ) {
      # Si l'expression match, je rentre dans le if
      # motif  (.+)\.\w+ = n'importe quoi au moins une fois suivi d'un point se terminant par au moins un caractère alphanumérique ou un underscore
      if ( $Fichier =~ m{(.+)\.\w+$} ) {
        print "Nom fichier : $1\n"; # $1 récupère ce qui est capté entre parenthèse
      } 
    }
    Pour plus d'explication, lit la FAQ rédigée par nos soins, c'est un bon début pour apprendre le langage

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Merci.

    Mais ça utilise une variable intermédiaire sans modifier le contenu du tableau.
    Donc je suis embêté si je dois le réutiliser.

    Je dois tester si $image_HD = $image_BD
    Mais sans l'extension.
    Comment inclure l'expression régulière directement dans mon if ?

Discussions similaires

  1. [perl] comparaison de fichiers
    Par falco- dans le forum Langage
    Réponses: 3
    Dernier message: 12/07/2007, 19h54
  2. [Debutant(e)]comparaison de fichier : imprimer
    Par demostene dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/07/2004, 10h43
  3. Comparaison de fichiers Word
    Par Zelphalya dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2003, 15h15
  4. [langage] Comparaison de fichiers
    Par Jibees dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2003, 16h27
  5. Comparaison de fichier
    Par danzerg dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 11h49

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