[ Perl ] comment "un-tainter" un array ?

comment "un-tainter" un array ? [ Perl ] - Perl - Programmation

Marsh Posté le 22-04-2002 à 10:40:09    

Tout est ds le topic. Je sais comment faire pour un scalaire mais pas pour un array.
 
hihi :p
 
PS : désolé pour ce "un-tainter" barbare mais en français ça donnerait un truc du genre "laver", ce qui n'a pas trop de sens... ;)

Reply

Marsh Posté le 22-04-2002 à 10:40:09   

Reply

Marsh Posté le 22-04-2002 à 11:24:23    

Alors personne ne sait comment "blanchir" un array ? ;)
 
hihi :D

 

[jfdsdjhfuetppo]--Message édité par impulse le 22-04-2002 à 11:24:37--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 22-04-2002 à 12:17:43    

impulse a écrit a écrit :

Alors personne ne sait comment "blanchir" un array ? ;)
 
hihi :D  
 
 




 
C'est à dire? tu veux faire quoi? vider un array?

Reply

Marsh Posté le 22-04-2002 à 13:10:14    

Citation :

C'est à dire? tu veux faire quoi? vider un array?


 
Non non. J'ai un array qui contient des noms de fichiers et qui est tainted et pour utiliser ces noms de fichiers je dois faire un untaint (si tu ne connais pas la signification du mot "taint" tu ne peux pas m'aider donc c'est pas grave ;) ).
 
Si tu veux comprendre ce que je dis : http://www.perl-gratuit.com/traduc [...] rlsec.html  
 
Merci quand meme !
 
hihi :D

Reply

Marsh Posté le 22-04-2002 à 14:16:20    

Dans la page dont tu as fournis l'url, il y a une exemple pour blanchir un scalaire... donc si tu as un tableau de scalaire, il te suffit de faire un map dessus :

Code :
  1. @array = ... ; # ton tableau
  2. @array = map {($_) = $_ =~ /^([-\@\w.]+)$/} @array;


 
ou tu peux utiliser

Code :
  1. /^.*$/

à la place si tu ne veux pas filtrer :)

Reply

Marsh Posté le 22-04-2002 à 14:23:16    

Hum... la c'est a mon tour de pas trop capter ce que tu dis... ;)
Je vais essayer de faire ce que tu as dit. J'ai essayé ça :
 
my ( @my_array ) = $edit->param('list';) =~ /^([a-zA-Z\d]+)$/;
 
et bien sur ça marche po (@my_array ne contient que la premiere valeur de la list passée en param...).
 
a suivre... (la j'ai un cours d'allemand)
 
hihi :D

Reply

Marsh Posté le 22-04-2002 à 14:44:09    

impulse a écrit a écrit :

Hum... la c'est a mon tour de pas trop capter ce que tu dis... ;)
Je vais essayer de faire ce que tu as dit. J'ai essayé ça :
 
my ( @my_array ) = $edit->param('list';) =~ /^([a-zA-Z\d]+)$/;
 
et bien sur ça marche po (@my_array ne contient que la premiere valeur de la list passée en param...).
 
a suivre... (la j'ai un cours d'allemand)
 
hihi :D  




 
En fait l'instruction map applique un bloc d'instruction à chaque élément d'un tableau, sachant que pour chaque élément, on lit et écrit la valeur du tableau via la variable $_ .
Ce que j'ai donc, c'est appliquer l'exemple de la doc à tout les éléments d'un tableau.
 
Dans ton exemple :

Code :
  1. my ( @my_array ) = $edit->param('list') =~ /^([a-zA-Z\d]+)$/;

 
tu veux récupérer un tableau alors que l'expression régulière va te renvoyer uniquement 1 élément vu qu'il n'y a qu'un seul groupe de parenthèses.
L'interêt de map c'est de justement appliquer ça à tout les éléments d'un tableau.
Si ta méthode param renvoie bien un tableau (et pas une référence vers un tableau), alors essaie ceci :
 

Code :
  1. my @my_array = map {($_) = $_ =~ /^([-\@\w.]+)$/} $edit->param('list');

Reply

Marsh Posté le 22-04-2002 à 15:55:27    

Tentacle tu es un vrai perl guru ! ;)
Ca marche nickel maintenant (2eme methode car la methode param() retourne bien un array).
 
a+
 
hihi :D

Reply

Marsh Posté le 22-04-2002 à 16:08:52    

de rien :)
 
tu connais la fonction perldoc -f en console (genre tu fais 'perldoc -f map' et tu verras ;) )? très pratique :D et aussi l'aide en HTML installée avec Perl.

Reply

Marsh Posté le 22-04-2002 à 16:15:25    

Citation :

de rien :)
tu connais la fonction perldoc -f en console (genre tu fais 'perldoc -f map' et tu verras ;) )? très pratique :D et aussi l'aide en HTML installée avec Perl.


 
Moi perso je fais http://www.perldoc.com  ;)
 
Mais encore faut-il entrevoir la solution pour s'en servir (ici la fonction map que je ne connaissais pas). J'ai cherché sur google avant de poster mais j'ai rien trouvé d'interessant sur "how to untaint an array"... :(
 
hihi :D

 

[jfdsdjhfuetppo]--Message édité par impulse le 22-04-2002 à 16:15:56--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 22-04-2002 à 16:15:25   

Reply

Marsh Posté le 22-04-2002 à 16:44:50    

Un autre truc très très partique, cherche le fichier perlfunc.html dans ta doc Perl (celle qui est installée, par exemple C:/Perl/html/lib/Pod/perlfunc.html ) et tu y trouveras pas mal de fonctions qui sont triées par type (genre celles sur les arrays, sur les scalaires, les hash, sur les ES, etc...) et c'est pas mal quand tu ne sais pas quoi chercher :)

Reply

Sujets relatifs:

Leave a Replay

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