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 :

[langage] simple question ...


Sujet :

Langage Perl

  1. #1
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut [langage] simple question ...
    coucou

    Est ce qqu'un sait si dans une fonction (sub-routine) en perl on est limité en retour de variable...? C'est à dire que j'ai une fonction qui prends en parametre 3 tableau associatf et me retourne 9 tableaux associatifs différents...

    Pb ou pas di pb??
    Perlgirl

  2. #2
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    je dirais pas de pb

    Autre avis ?
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    pour ma part je dirais po de probleme j'ai déjà essayé et po été jusqu"a la limite dc essaye mais normalement po de probleme...


    HAPPY PERL

    Ludo
    -------------------------------------------
    Happy c++ bon courage a tous
    PENSEZ AU TAG RESOLU :-)
    -------------------------------------------

  4. #4
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Apparemment il s'agit d'une syntaxe paticuliere pour faire comprendre que l'on renvoi des tableau de hash distincts et les recuperer dans des tableaux distincts car voici ce que j'ai fait et qui ne marche pas:




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    sub ma_fonction {
    ........
    .......
    return (%tab1, %tab2, %tab3);
    }
     
    my (%tab4, %tab5, %tab6) = ma_fonction (\%hash1, \%hash2)
    Perlgirl

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut Re: simple question ...
    Citation Envoyé par perlgirl
    coucou

    Est ce qqu'un sait si dans une fonction (sub-routine) en perl on est limité en retour de variable...? C'est à dire que j'ai une fonction qui prends en parametre 3 tableau associatf et me retourne 9 tableaux associatifs différents...

    Pb ou pas di pb??
    Disons que tu pourrais avoir une fonction ne prenant que des références en paramètres, soit un total de 12 références (c-a-d tes 3 + 9 hash).

    Dans ces cas là, tu pourrais même te payer le luxe de faire une fonction permettant de retourner "1" si tout s'est bien passé ou "0" si boulette survenue. Tous les hash que la fonction lit ou crée sont reçus en paramètres.

  6. #6
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    J'ai dejà essayé cette alternative...mais sans succes...la doc je l'ai exploré dans tous ses recoins et ils disent que c'est possible mais a chaque fois donnent des exemple pr retourner plusieurs variables scalaires et leur syntaxe ne marche pas avec les tableaux associatifs...

    Ludo167 a dit qu'il avait deja reussi donc j'aimerai bien voir sa syntaxe...

    Merci
    Perlgirl

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Citation Envoyé par perlgirl
    J'ai dejà essayé cette alternative...mais sans succes...la doc je l'ai exploré dans tous ses recoins et ils disent que c'est possible mais a chaque fois donnent des exemple pr retourner plusieurs variables scalaires et leur syntaxe ne marche pas avec les tableaux associatifs...

    Ludo167 a dit qu'il avait deja reussi donc j'aimerai bien voir sa syntaxe...

    Merci
    Voici un tout petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %hash = (1, "un", 2, "deux", 3, "trois");
     
    RajouteCle(\%hash);
     
    print "cle rajoutee = 4 = $hash{4}\n";
     
    sub RajouteCle
    {
        my ($ref) = shift();
        $ref->{4} = "quatre";
    }

  8. #8
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    recherrche mon code en vain en faite ce code tourné sous unix avant deux machines pour raison de coup on supprimer ma machine unix pour une seule machin avac multiboot et linux mais je sais pas ou j'ai foutu c putain de fichier en plus ca date..... fais chier qu'est ce que je suis bordelique....... arghhhh malheur a moi je regarderais ds la journée car doit finir un truc pour ce soir!!!!

    promis et vous tiens au courant....;

    Ludo
    -------------------------------------------
    Happy c++ bon courage a tous
    PENSEZ AU TAG RESOLU :-)
    -------------------------------------------

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Citation Envoyé par Ludo167
    recherrche mon code en vain en faite ce code tourné sous unix avant deux machines pour raison de coup on supprimer ma machine unix pour une seule machin avac multiboot et linux mais je sais pas ou j'ai foutu c putain de fichier en plus ca date..... fais chier qu'est ce que je suis bordelique....... arghhhh malheur a moi je regarderais ds la journée car doit finir un truc pour ce soir!!!!

    promis et vous tiens au courant....;

    Ludo
    on comprend bien ce que tu dis


  10. #10
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Bon c'est pas grave ne stress pas pr ca et bon courage pr ton boulot .
    Perlgirl

  11. #11
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    je suis desolé aujourd"hui vraiement po le temps
    y'en a un qui me les ..... pour que je finnisse ce soir....
    voici qq exemples:

    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
     
    on a
    %types = (
        'C_Bool'    => [0,1],
        'C_Char'       => [-128,127],
        'C_UInt'       => [0,65535],
    )
     
    si on passe  
    toto(%types)
     
    dans la sub toto
    sub toto
    {
    # tu recupere le parametre de la fonction  
    $hash = $_[0];
     
    # pour obtenir -128 cad $types{'C_CHAR'}[0]
    $$hash->{'C_CHAR'}[0]
     
    }


    voilà tous ce que j'ai pour l'instant sur les tables de hash passage de param etc....

    http://www.lhullier.org/publications...hapitre07.html
    http://perso.univ-rennes1.fr/francoi...ERLnode12.html
    http://www.dil.univ-mrs.fr/~chris/Perl/References.htm
    http://etud.epita.fr/~molong_m/expor...ept_perl4.html
    [/code]
    -------------------------------------------
    Happy c++ bon courage a tous
    PENSEZ AU TAG RESOLU :-)
    -------------------------------------------

  12. #12
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    tiens un copain vient de me donner un bout de code qui pourrait t'interresser pe etre!!!

    tu vois un peu juste pour toi.... je vé me faire engueler!!!
    lol je bosse gogogogoogogogogo....

    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
    49
    50
    51
    52
    53
     
    use strict;
     
    sub MyFunc
    {
    	my ($HashRef1, $HashRef2, $HashRef3) = @_;
     
    	my %Hash11 = %$HashRef1;
    	my %Hash12 = %$HashRef1;
    	my %Hash13 = %$HashRef1;
     
    	my %Hash21 = %$HashRef2;
    	my %Hash22 = %$HashRef2;
    	my %Hash23 = %$HashRef2;
     
    	my %Hash31 = %$HashRef3;
    	my %Hash32 = %$HashRef3;
    	my %Hash33 = %$HashRef3;
     
    	$Hash11{11} = "11";
    	$Hash12{12} = "12";
    	$Hash13{13} = "13";
     
    	$Hash21{21} = "21";
    	$Hash22{22} = "22";
    	$Hash23{23} = "23";
     
    	$Hash31{31} = "31";
    	$Hash32{32} = "32";
    	$Hash33{33} = "33";
     
    	return (\%Hash11,\%Hash12,\%Hash13,\%Hash21,\%Hash22,\%Hash23,\%Hash31,\%Hash32,\%Hash33);
    }
     
     
     
     
    my %hash1 = (1 => "1");
    my %hash2 = (2 => "2");
    my %hash3 = (3 => "3");
     
    my ($HashRef11,$HashRef12,$HashRef13,$HashRef21,$HashRef22,$HashRef23,$HashRef31,$HashRef32,$HashRef33) = MyFunc(\%hash1,\%hash2,\%hash3);
    my @HashRefs = MyFunc(\%hash1,\%hash2,\%hash3);
     
    my $HashRef;
    foreach $HashRef (@HashRefs)
    {
    	while ( my ($key, $value) = each %$HashRef )
    	{
    		print "key : $key\nvalue : $value\n\n";
    	}
    	print "\n\n";
    }

    medite bien je pense que tu as toutes les infos
    Bye
    -------------------------------------------
    Happy c++ bon courage a tous
    PENSEZ AU TAG RESOLU :-)
    -------------------------------------------

  13. #13
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Ludo167
    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
    49
    50
    51
    52
    53
     
    use strict;
     
    sub MyFunc
    {
    	my ($HashRef1, $HashRef2, $HashRef3) = @_;
     
    	[color=red]my %Hash11 = %$HashRef1;
    	my %Hash12 = %$HashRef1;
    	my %Hash13 = %$HashRef1;
     
    	my %Hash21 = %$HashRef2;
    	my %Hash22 = %$HashRef2;
    	my %Hash23 = %$HashRef2;
     
    	my %Hash31 = %$HashRef3;
    	my %Hash32 = %$HashRef3;
    	my %Hash33 = %$HashRef3;[/color]
     
    	$Hash11{11} = "11";
    	$Hash12{12} = "12";
    	$Hash13{13} = "13";
     
    	$Hash21{21} = "21";
    	$Hash22{22} = "22";
    	$Hash23{23} = "23";
     
    	$Hash31{31} = "31";
    	$Hash32{32} = "32";
    	$Hash33{33} = "33";
     
    	return (\%Hash11,\%Hash12,\%Hash13,\%Hash21,\%Hash22,\%Hash23,\%Hash31,\%Hash32,\%Hash33);
    }
     
     
     
     
    my %hash1 = (1 => "1");
    my %hash2 = (2 => "2");
    my %hash3 = (3 => "3");
     
    my ($HashRef11,$HashRef12,$HashRef13,$HashRef21,$HashRef22,$HashRef23,$HashRef31,$HashRef32,$HashRef33) = MyFunc(\%hash1,\%hash2,\%hash3);
    my @HashRefs = MyFunc(\%hash1,\%hash2,\%hash3);
     
    my $HashRef;
    foreach $HashRef (@HashRefs)
    {
    	while ( my ($key, $value) = each %$HashRef )
    	{
    		print "key : $key\nvalue : $value\n\n";
    	}
    	print "\n\n";
    }
    Merci beaucoup ludo...
    Dans ce code je ne comprends pas a quoi peut servir la partie du code en rouge??? POurquoi faire une egalité entre le hash pris en parametre et le hash de la fonction que l'on va retourné???

    Et une autre question que contient le tableau @Hashrefs??
    Perlgirl

  14. #14
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    bah koi rien de bien compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my ($HashRef11,$HashRef12,$HashRef13,$HashRef21,$HashRef22,$HashRef23,$HashRef31,$HashRef32,$HashRef33) = MyFunc(\%hash1,\%hash2,\%hash3);
     
    my @HashRefs = MyFunc(\%hash1,\%hash2,\%hash3);
    en faite ces deux ligne sont identiques la premiere tu stocke dans chaque variable et la deuxieme tu met tout un tableau bcp plus propre car apres parcours etc bcp plus simple!!!

    ludo
    -------------------------------------------
    Happy c++ bon courage a tous
    PENSEZ AU TAG RESOLU :-)
    -------------------------------------------

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  2. Simple Question ....
    Par soltani.slim dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/08/2005, 18h11
  3. PageControl -> Une simple question
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/05/2004, 09h19
  4. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29

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