Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1006 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1409501
axl the mu​x
Posté le 19-07-2006 à 15:34:24  profilanswer
 

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.
mood
Publicité
Posté le 19-07-2006 à 15:34:24  profilanswer
 

n°1409514
Elmoricq
Modérateur
Posté le 19-07-2006 à 15:45:17  profilanswer
 

Bleârgh.
 
Utilise plutôt les hashmaps.

n°1409522
axl the mu​x
Posté le 19-07-2006 à 15:53:38  profilanswer
 

??


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
n°1409525
axl the mu​x
Posté le 19-07-2006 à 15:54:50  profilanswer
 

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.
n°1409543
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2006 à 16:03:03  profilanswer
 

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!!!

n°1409554
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2006 à 16:10:01  profilanswer
 

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 ...

n°1409560
axl the mu​x
Posté le 19-07-2006 à 16:13:31  profilanswer
 

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.
n°1409562
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2006 à 16:17:25  profilanswer
 

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

n°1409566
axl the mu​x
Posté le 19-07-2006 à 16:20:06  profilanswer
 

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.
n°1409568
axl the mu​x
Posté le 19-07-2006 à 16:21:31  profilanswer
 

$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.
mood
Publicité
Posté le 19-07-2006 à 16:21:31  profilanswer
 

n°1409591
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2006 à 16:45:51  profilanswer
 

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
n°1409602
axl the mu​x
Posté le 19-07-2006 à 16:53:17  profilanswer
 

merci a toi
je vais voir ca


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
n°1409603
axl the mu​x
Posté le 19-07-2006 à 16:54:16  profilanswer
 

en faite je veux initialiser les valeurs et pas les recuperer  


---------------
nos utopies d'aujourd'hui sont les réalités de demain.
n°1409819
Elmoricq
Modérateur
Posté le 19-07-2006 à 23:26:08  profilanswer
 


 
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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

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

 

Sujets relatifs
[resolu] [batch] recherche chaine avec findstrcomment stocker le resultat d'un "select" dans une variable
executer un script perl periodiquementSoucis avec form + variable
[VBA] RESOLU Extraction d'une chaine de caractèresincohérence entre une variable et son test
Récuper du texte dans un fichier puis la mettre dans une variablePasser une variable dans la définition d'un width
Introduction d'une variable dans un texte[Batch] Récup variable %TEMP% de l'admin
Plus de sujets relatifs à : [Perl] générer une variable grace à une chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR