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 fonction split


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 32
    Points
    32
    Par défaut Problème fonction split
    Bonjour

    Je rencontre un problème avec la fonction split().
    Je dois à partir d'une chaine de type "login/passwd@base" extraire ces données et obtenir :
    chaine1 = login@base
    chaine2 = passwd


    Voici le code que j'utilise pour tenter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $chaine_log = "login/passwd@base";
    my @tmp_connect_string1 = split(/\//,$chaine_log);
    my @tmp_connect_string2 = split(/@/,$tmp_connect_string1[1]);
    my @connect_string = ();
    $connect_string[0] = $tmp_connect_string1[0]."@".$tmp_connect_string2[1];
    $connect_string[1] = $tmp_connect_string2[0];
    En fait il ne coupe pas la chaine en deux parties avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @tmp_connect_string1 = split(/\//,$chaine_log);
    , il s'arrete avant le "@". J'obtiens donc login puis passwd mais après le "@", il ne prend rien. ("base" passe donc à l'as).

    Pouvez m'aider car je ne comprends pas mon erreur. split() devrait couper la chaine en deux : avant le / et après le /.

    Merci d'avance
    ...Que La Funk soit avec Vous...

  2. #2
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    Je te propose une solution plus simple, qui consiste à demander à split de découper selon le séparateur / ou @.

    De plus, pour éviter d'avoir à échapper /, tu peux changer l'opérateur de regexp à volonté.

    Voici le code que je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #! /usr/bin/perl
     
    use strict;
     
    my $taiste = 'toto/tata@titi';
     
    my @data = split '/|@', $taiste;
     
    printf "Login : %s, pass : %s, base : %s\n", $data[0], $data[1], $data[2];
    Quant à ton problème, vérifie qu'il ne vient pas de la création de ta chaîne "$chaine_log".
    Tu utilises en effet des guillemets, et un @ à l'intérieur de ta chaîne, ce qui revient à demander à PERL d'interpoler le contenu de ta variable pour qu'il ajoute à ta chaîne le contenu d'un hypothétique tableau @base.
    L'utilisation de "use strict;" en début de script t'aurait permis d'obtenir l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    In string, @base now must be written as \@base at test.pl line 5, near "login/passwd@base"
    Global symbol "@base" requires explicit package name at test.pl line 5.
    Execution of test.pl aborted due to compilation errors.
    Deux solutions : utiliser des apostrophes au lieu de guillemets, pour interdire toute interpolation, ou alors échaper l'arobase.
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Merci Gamdwin pour toutes ces informations bien utiles. En effet les c'est bien les guillemets qui posaient un problème pour l'arobase. Je vais aussi utiliser ta méthode proposée.

    Encore merci pour ton aide
    ...Que La Funk soit avec Vous...

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

Discussions similaires

  1. problème avec python et la fonction split
    Par bebemyouler dans le forum Général Python
    Réponses: 14
    Dernier message: 04/06/2012, 20h49
  2. Fonction Split et dates, problème
    Par hugues1138 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/07/2011, 18h20
  3. problème avec la fonction split(":")
    Par polo42 dans le forum Général Python
    Réponses: 2
    Dernier message: 15/08/2007, 16h13
  4. [VB6]Problème avec la Fonction Split
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/06/2007, 19h23
  5. [Tableaux] problème avec la fonction split()
    Par Marcus15 dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 11h17

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