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 :

la fonction length se trompe


Sujet :

Langage Perl

  1. #1
    Membre régulier Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 78
    Points
    78
    Par défaut la fonction length se trompe
    Bonjour,

    j'ai un petit problème après avoir matcher des morceau de chaines de caractères je voudrais connaitre leurs longueur. Je fait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                my $tmp = $1.$2.$3.$4.$5 ;
                my $rang_C         = length ($tmp) ;
    Et ça me renvois 84 alors que ça devrais me renvoyer 23...

    J'ai chercher sur google : j'ai trouvé qu'un seul article en anglais que je n'ai pas très bien compris et où ils disent que ce n'est pas un bug... Mais ils ne donnent pas la solution.

    Merci de votre aide,
    ++Florent.

  2. #2
    Membre régulier Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 78
    Points
    78
    Par défaut
    C'est curieux en déséspoire de cause je me suis créé ma propre fonction length :
    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
    sub myLength
    {
        (@_ == 1)
            or die ("\nLa methode enrichirMessage prend 1 argument."
                    ."\nElle a etait appelee avec ".@_." argument(s).") ;
        my ($str) = @_ ;
     
        $res = 0 ;
        print "\nmyLength\nstr = [$str]\n" ;
        while ($str =~ m/(.)/g)
        {
            print $1 ;
            $res++ ;
        }
        print "|\nfin myLength\n" ;
        return $res ;
    }
    Et ça me donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    myLength
    VSCCP      2317  ]2317  Y  N  6562        09-06-23 15:05:54       -
    VSCCP      2317  |  N  6562        09-06-23 15:05:54       -
    fin myLength
    En fait la chaine passé devrait être "VSCCP 2317 " on dirait que toute ma ligne sur laquelle j'applique la regex est passée mais avec des "curseur" indiquant le début et la fin...

    ++Florent.

  3. #3
    Membre régulier Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 78
    Points
    78
    Par défaut
    Stop arrétez de vous creuser la tête je suis un blairot : j'avais mis $1 qui matche toute la chaine puis les autre $2, $3 etc qui la décomposent... Comme je dois matcher un \r à la fin de ma chaine le curseur revient au début et réécrit $2, $3... par dessus...

    Désolé.

    ++Florent.

  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
    oser critiquer la fonction length de Perl, non mais je rêve

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

Discussions similaires

  1. utilisation fonction length
    Par mumu64 dans le forum R
    Réponses: 3
    Dernier message: 13/09/2013, 12h54
  2. [Débutant] Souci avec la fonction length(x)
    Par latiole dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/08/2012, 09h27
  3. la fonction length()
    Par maxwellnina dans le forum Langage
    Réponses: 10
    Dernier message: 24/07/2010, 18h44
  4. [FireBird] équivalent de la fonction LENGTH
    Par richard038 dans le forum SQL
    Réponses: 9
    Dernier message: 29/06/2006, 17h40
  5. Fonction Length qui ne marche plus
    Par Manic dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2006, 13h52

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