[Perl] générer une variable grace à une chaine

générer une variable grace à une chaine [Perl] - Perl - Programmation

Marsh Posté le 19-07-2006 à 15:34:24    

Bonjour,
 
je souhaite creer une variable dynamiquement en concatenant du texte genre :
 
 
$a{a}{b}="oui"
 
$b="$a{a}";
$c="{b}";
 
$d=$b.$c
 
et que $d vaille oui et non pas "$a{a}{b}"
 
comment faire ?
 
merci d'avance
 
 
 
 
 
 
 
 
 


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 15:34:24   

Reply

Marsh Posté le 19-07-2006 à 15:45:17    

Bleârgh.
 
Utilise plutôt les hashmaps.

Reply

Marsh Posté le 19-07-2006 à 15:53:38    

??


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 15:54:50    

perl -e '$a{a}{b}="oui";%b=$a{a};print "$b{b}\n";'
 
ca ne fonctionne pas plus ...


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 16:03:03    

s'nawak [:mlc]
En fait je comprends même pas pourquoi tu peux avoir besoin de faire un truc comme ça...  
Si tu nous expliquais un peu! Là je suis sur que tu te compliques la vie pour rien!!!

Reply

Marsh Posté le 19-07-2006 à 16:10:01    

d'ailleurs t'as derniere ligne ne peut pas marcher
il faut que tu fasse $b = $a{'a'} et pour le printer $$b{'b'}
Mais je continue a dire que je comprends pas le besoin ...

Reply

Marsh Posté le 19-07-2006 à 16:13:31    

sympa ..... :)
 
en gros je veux attaquer differents niveaux d'un tableau associatif sans savoir le nombre de niveau de celui-ci.
 
$t=toto;
 
{ $ass{$t}} if ($niv == 1)  
{ $ass{0100}{$t}} if ($niv == 2)  .....
 
je cherche a faire une boucle pour remplacer les if car je ne connais pas le nombre de niveau .
 
merci d'avance


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 16:17:25    

comment tu détermines la clé de "premier niveau" si tu as $niv == 2?

Reply

Marsh Posté le 19-07-2006 à 16:20:06    

je stocke les clefs de chaque niveau ds un tableau separe que je mets a jour a chaque changement de cle


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 16:21:31    

$c[0]="0010";
$c[1]="0100";
$c[2]="0200";
 
$t=toto;
 
{ $ass{$c[0]}} if ($niv == 1)  
{ $ass{$c[0]}{$t}} if ($niv == 2)  .....  


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 16:21:31   

Reply

Marsh Posté le 19-07-2006 à 16:45:51    

En gros tu as un truc comme ça:

Code :
  1. my $key = 'toto';
  2. my $niveau = 3;
  3. my @c = ('0010', '0100', '0200');
  4. my %ass;
  5.    $ass{'toto'} = 1;
  6.    $ass{'0010'}{'toto'} = 'X';
  7.    $ass{'0010'}{'0100'}{'toto'} = 'Z';
  8.    $ass{'0010'}{'0100'}{'0200'}{'toto'} = 8;


et $niveau varie et en fonction tu veux récupérer le bon?
En attendant que Popos ou Elmoricq te donne teh solution, tu peux toujours faire un truc comme ça:

Code :
  1. my $hr = \\%ass;
  2. for (my $i=0; $i<$niveau-1;$i++){
  3.   $hr = $$hr{$c[$i]};
  4. }
  5. print $$hr{$key};


 
Mais je continue a penser que cela ne te permettra que de contourner un problème de conception dans ton bouzin!

Message cité 1 fois
Message édité par anapajari le 19-07-2006 à 16:46:09
Reply

Marsh Posté le 19-07-2006 à 16:53:17    

merci a toi
je vais voir ca


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 16:54:16    

en faite je veux initialiser les valeurs et pas les recuperer  


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
Reply

Marsh Posté le 19-07-2006 à 23:26:08    


 
Hâchages/Tableaux associatifs.
 

axl the mux a écrit :

sympa ..... :)
 
en gros je veux attaquer differents niveaux d'un tableau associatif sans savoir le nombre de niveau de celui-ci.
 
$t=toto;
 
{ $ass{$t}} if ($niv == 1)  
{ $ass{0100}{$t}} if ($niv == 2)  .....
 
je cherche a faire une boucle pour remplacer les if car je ne connais pas le nombre de niveau .
 
merci d'avance


 
Je ne comprends vraiment pas ce que tu souhaites faire : stocker dans un tableau un hâchage ? Stocker dans un hâchage un tableau, voire des sous-hâchages ?
En fait, peux-tu expliquer l'algorithme que tu veux implémenter, ou plus simplement la problématique à résoudre ?
 

anapajari a écrit :

En gros tu as un truc comme ça:

Code :
  1. my $key = 'toto';
  2. my $niveau = 3;
  3. my @c = ('0010', '0100', '0200');
  4. my %ass;
  5.    $ass{'toto'} = 1;
  6.    $ass{'0010'}{'toto'} = 'X';
  7.    $ass{'0010'}{'0100'}{'toto'} = 'Z';
  8.    $ass{'0010'}{'0100'}{'0200'}{'toto'} = 8;


et $niveau varie et en fonction tu veux récupérer le bon?
En attendant que Popos ou Elmoricq te donne teh solution, tu peux toujours faire un truc comme ça:

Code :
  1. my $hr = \\%ass;
  2. for (my $i=0; $i<$niveau-1;$i++){
  3.   $hr = $$hr{$c[$i]};
  4. }
  5. print $$hr{$key};


 
Mais je continue a penser que cela ne te permettra que de contourner un problème de conception dans ton bouzin!


 
Je veux bien proposer "teh solution", mais je pige pas ce qu'il veut faire, et j'avoue que ce que tu as écrit me laisse un peu perplexe aussi. :??:
Je suis un peu comme toi, j'ai le sentiment qu'une fois qu'on aura dégagé le coeur du problème, on pourra trouver une solution toute simple.


Message édité par Elmoricq le 19-07-2006 à 23:31:48
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed