(.+?) matche tout type de caractère, + veut dire "1 ou plus" et ? "non-gourmand" (s'arrêter dès que possible).
Ce qu'il y a après le "if" (le match) est éxécuté en premier, sur $_ (que j'ai supposé contenir ta chaîne). Si ta chaîne est dans une autre variable $chaine, tu peux faire ça plutôt :
my %vals;
$vals{$1} = $2 if $chaine =~ m/<input name="(.+?)" value="(.+?)" type="text">/;
Après l'évaluation du if, s'il est faux (pas de match) on ne fait rien, s'il est vrai ce qui est matché par le premier (.?+) est stocké automatiquement dans $1 par Perl et idem pour le second dans $2. On affecte alors à la clé référencée par $1 de la hash-table %vars (qui est créée si elle n'existait pas) la valeur de $2.
Au final, tu te retrouves avec %vals rempli tel que dans ton exemple :
$vals{'phorum_challenge'} == "Développement"
et de même pour les autres champs.
[
catwell.info]
Poste le Wednesday 18 June 2008 13:56:47