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 :

Problème expressions régulieres


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut Problème expressions régulieres
    Bonjour !

    J'ai mis ceci et le compilateur me dit qu'il y a erreur de synthaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach my $fichier ($ftp->ls("ST*.sig"))
    	{ 
                 $ftp->get($fichier, \*TMP); 
                 $fichier =~ s/sig+$/txt+$/;  
                 print($fichier);
                 system("pause");                                            
                 }
    Le but étant de changer l'extention .sig en .txt afin de marquer les fichiers deja utilisés

    merci davance

  2. #2
    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 PlazaDel62 Voir le message
    J'ai mis ceci et le compilateur me dit qu'il y a erreur de synthaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier =~ s/sig+$/txt+$/;
    Tu devrais réviser tes regexps, le "+" ici n'est pas nécessaire, de plus dans le "$" dans la partie de remplacement n'a pas de sens (ou plutôt il n'a pas le sens que tu lui attribue).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier =~ s/sig$/txt/;
    est correct.

    (Par ailleurs j'ai l'impression que tu ne fais pas ce que tu veux faire... Mais comme je ne suis pas sûr de tes intentions...)

    --
    Jedaï

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut
    Si je mets une ligne de test genre print($ligne) il me met bien le .txt mais quand je sors du programme et que je vais vérifier sur le ftp, rien n'a changé Oo


    En fait je travaille dans un dossier où sont balancer par une meme personne des fichiers similaires, mais à dates différentes.
    Donc je voudrai prendre le dernier. J'ai opté pour une solution de marquage, à savoir si un fichier a été utilisé, il n'est plus en .sig mais .txt
    Et comme je liste tous les ST*.sig j'aurai forcément le dernier a tous les coups

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    bonjour ,
    un probleme sr les fichier peux etre ?
    cordialement krousty.

  5. #5
    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 PlazaDel62 Voir le message
    Si je mets une ligne de test genre print($ligne) il me met bien le .txt mais quand je sors du programme et que je vais vérifier sur le ftp, rien n'a changé Oo
    Oui, c'est bien ce que je pensais, tu ne comprends pas vraiment ce que tu fais... Là ta regex elle modifie une chaîne de caractères, c'est tout, elle ne va surtout pas modifier le nom d'un fichier sur un ftp dont le nom était la valeur originelle de la chaîne. Ce serait de la magie noire, possible mais extrêmement dangereux.

    Il faut modifier explicitement le nom du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach my $filename ($ftp->ls("ST*.sig")) { 
      $ftp->get($filename, \*TMP);
      (my $new_filename = $filename) =~ s/sig$/txt/;
      $ftp->rename($filename, $new_filename);
      print "$new_filename\n";
      <>;                                            
    }
    --
    Jedaï

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut
    Ce serait quel genre de probleme ?
    Car avant de faire ça, je les listais tous comme un bourrin, et ça fonctionnait. Tout fonctionnait. Donc je pense que ça doit etre juste mon histoire de renommage non ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut
    Merci Jedai ça fonctionne !
    En fait je connais pas vraiment tout ce qui touche aux expressions régulières et j'ai pas vu grand chose sur le net concernant le renommage (J'avais un doute avec ma solution mais je ne voyais que celle la je n'en connaissais pas d'autre)

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

Discussions similaires

  1. problème expression réguliere
    Par knebhi dans le forum Langage
    Réponses: 6
    Dernier message: 10/02/2010, 19h15
  2. probléme d'expression réguliere
    Par penguin50 dans le forum Ruby
    Réponses: 3
    Dernier message: 06/06/2008, 23h41
  3. Problème d'expression réguliere.
    Par mitou dans le forum Langage
    Réponses: 3
    Dernier message: 20/03/2008, 09h34
  4. [RegEx] Problème avec une expression réguliere
    Par figatelliSTI dans le forum Langage
    Réponses: 4
    Dernier message: 20/02/2008, 09h59
  5. expression réguliere en c++
    Par alambics dans le forum MFC
    Réponses: 9
    Dernier message: 10/03/2004, 20h19

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