j'ai quelques soucis avec les expressions regulieres :
Contexte : J'ai un script perl qui me genere un script html avec une methode GET, et je souhaite recuperer mes champs et leurs valeurs.
Type de chaine a traiter $ENV{QUERY_STRING} : Interlocuteur=toto&champ1=&Champ2=Hauteur+support&Champ3=Alimentation&champ4=Taille+caisson&champ5=&Valider=Valider&.cgifields=champ2&.cgifields=champ3&.cgifields=champ4
a) J'arrive a extraire le nom d'un champ a l'aide d'une variable :
$traitement =~ m/@param[$iR]/;
print $traitement;
mais pas le contraire, cad que je voudrais tout sauf le nom de mon champ. J'ai essaye ca (ci-dessous), mais ca ne marche pas.
$traitement =~ m/[^@param[$iR]]/;
print $traitement;
b) j'ai fait une boucle pour extraire toutes mes valeurs :
my $requete = $ENV{QUERY_STRING};
# Les valeurs contenues a partir de la mention "Valider" sont supprimmees
$requete =~ s/&Valider.*$//;
$traitement = $requete;
# Boucle pour extraire les champs de la requete et leurs valeurs
foreach (@param)
{
# extraction du premier champ de la requete
if ($iR == 0)
{
$traitement =~ s/&.*//;
$worksheet->write($iR, 1, $traitement);
}
# extraction des autres champs
else
{
$traitement =~ s/[^@param[$iR]]//;
$worksheet->write($iR, 1, $traitement);
}
$iR++;
}
et voila ce qu'elle me donne :
Interlocuteur=toto
nterlocuteur=toto
nerlocuteur=toto
nelocuteur=toto
nelcuteur=toto
neluteur=toto
eluteur=toto
euteur=toto
euteurtoto
eteurtoto
eeurtoto
eurtoto
euroto
eroto
roto
oto
oto
oto
to
Partager