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