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 :

conflit strict backreference variable


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut conflit strict backreference variable
    Bonjour,
    AVEC strict, je veux
    "
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #! /usr/bin/perl -w
    use strict;
     
     
    use warnings;
    #open(fileIn,"./erreursGoogleEarthSolutMoi.txt");
    my $infile ;
     
    #fileOut;fileIn;
    my @tableau_fileIn;
    my $ligne;
    local $1=0;
    $infile = 'erreursGoogleEarthSolutMoi.txt' ;
     
    open(fileIn,$infile); #p48
     
    open(fileOut,">poubOut");
    #
    ##my($text) = "mississippi";
    ##$text =~ m/(i.*?s)/;
    #
    ##print $1 . "\n";
    #@tableau_fileIn=<fileIn>;
    print "\nok";
    #@tableau_fileIn=<./erreursGoogleEarthSolutMoi.txt>;
    @tableau_fileIn=<fileIn>;
     
    foreach $ligne (@tableau_fileIn)
    {print "\nin boucle ";
    #$ligne   =~ s/\/opt.*\.so/kkk$1/g;
     $ligne   =~ s/(\/optso)/kkk\1/g; #\1 cat de fichier
    ##$text =~ s/printf.*lbl[0-9]+\);//g;
    #print "\nok ";
     #  print $ligne, $1; comportement bizarre
     print $1;
    #
    #  print push(@lbls,3);   
    #  print "\n";
    #   
    #   # comme remplacer ts les //lbl mais sanspouvoir specifier variable
    #   # but: par 10n , identifie doublons , 1ere chiffre=fichier , ordonné
    }
    close(fileIn);
    close(fileOut);
    #
    #   #affich tableau
    #   print @lbls;
    #

    "

    Il parait qu'on utilise \1 ds regexp et $1 en externe , mail perl me met "\1 better written as $1 at /home/peter/Desktop/erreursGoogleEarthSolutMoi.pl line 30."
    Sauf que si je remplace \1 par $1, il met "uninitialized value $1".
    Alors, j'ai mis : local $1=0; Mais en vain .
    Alors comment faire quand on veut reutiliser une sous chaine de regexp à l'extérieur de regexp AVEC strict(testez votre solution, avant)?

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    $1 devrait marcher, même avec use strict :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'totoA' | perl -pe 'use strict; s/(.*)A/$1B/g'
    STP pose un code propre qui montre le problème. Ton truc est illilisble, on ne voit même pas où est le problème.

  3. #3
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Première chose à faire, utilise les balises CODE (bouton #) pour poster du Perl sur le forum, sinon c'est illisible.
    Deuxième problème : les commentaires ne sont pas un substitut pour du contrôle de version, ne mets pas 18 versions différentes d'une ligne en commentaire, ça ajoute à la confusion.
    Troisième problème : il est probable que la regexp échoue sur certains élément du tableau et c'est pourquoi $1 est parfois vide, il faudrait plutôt mettre la ligne avec $1 dans une conditionnelle.

    --
    Jedaï

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    ok, oui la conditionnelle!
    merci!
    Mais erreur....cf mon prochain post: http://www.developpez.net/forums/d68...l/#post3979796

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

Discussions similaires

  1. [XHTML] Variables d'URL et validation XHTML 1.0 Strict
    Par will89 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 09/06/2008, 16h03
  2. PL/pgSQL : conflit entre variable et nom de colonne
    Par archeboc dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 26/03/2008, 12h10
  3. Conflit de variables AS2
    Par lea94140 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 06/07/2007, 09h10
  4. [rmi] [Debug] conflit de variable de connection
    Par nejib dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/05/2006, 16h35
  5. Variable avant et après "use strict;"...
    Par kepon85 dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 14h42

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