OVH Cloud OVH Cloud

test des input

13 réponses
Avatar
Alexandre Jaquet
hello,

J aimerais bien savoir pourquoi lorsque j utilise :

my $user_name = $query->param ('user_name') =~ /^([\w.])$/;

la donnée retourné n'est pas valable mais si j utilise

my $user_name = $query->param ('user_name');
$user_name =~ /^([\w.])$/; c est ok

d'avance merci

10 réponses

1 2
Avatar
Nicolas George
Alexandre Jaquet wrote in message
<42d6265b$0$1149$:
J aimerais bien savoir pourquoi lorsque j utilise :

my $user_name = $query->param ('user_name') =~ /^([w.])$/;


$foo = $bar =~ /baz/;

est lu comme

$foo = ($bar =~ /baz/);

et pas comme

($foo = $bar) =~ /baz/;

Le résultat est donc le résultat du =~, soit un booléen dans le cas présent.

Avatar
Alexandre Jaquet
Alexandre Jaquet wrote in message
<42d6265b$0$1149$:

J aimerais bien savoir pourquoi lorsque j utilise :

my $user_name = $query->param ('user_name') =~ /^([w.])$/;



$foo = $bar =~ /baz/;

est lu comme

$foo = ($bar =~ /baz/);

et pas comme

($foo = $bar) =~ /baz/;

Le résultat est donc le résultat du =~, soit un booléen dans le cas présent.


merci tu sais peut être également pourquoi lorsque je fais ceci
&action=search&min_index=/30&&search_name=&search_genre

(j ai le charcter / qui devrait etre substitué)

my $index_start = $query->param ("min_index") ;
$index_start =~ /^([w.])$/;
my $index_end = $query->param ("max_index") ;
$index_end =~ /^([w.])$/;


mais les char non alphanuméric sont toujours présent
quelqu un aurait une idée pourquoi ?

merci d avance


Avatar
Nicolas George
Alexandre Jaquet wrote in message
<42d65a51$0$1152$:
merci tu sais peut être également pourquoi lorsque je fais ceci
<snip>

mais les char non alphanuméric sont toujours présent
quelqu un aurait une idée pourquoi ?


Pourquoi ne le seraient-ils pas ? Manifestement, tu n'as pas bien compris la
sémantique de l'opérateur de match m/.../ : il ne change en aucun cas la
chaîne traitée.

Avatar
Jacques Caron
Salut,

On Thu, 14 Jul 2005 14:27:56 +0200, wrote:

$index_start =~ /^([w.])$/;


Ce genre d'instruction ne fait rien. Il regarde si ton $index_start
correspond à la regexp donnée ou pas, et puis il jette le résultat. Pas
super utile. En plus ta regexp, euh... Elle vérifie que la variable elle
contient une lettre ou n'importe quel caractère (et un seul). Je ne suis
vraiment pas convaincu que ce soit ce que tu cherches.

Je pense qu'il te faudrait plutôt quelque chose comme:

$index_start =~ s/W//g; # supprimer tout ce qui n'est pas une lettre ou
un chiffre

ou

$index_start =~ /(w+)/ && ($index_start = $1); # récupérer la première
série de lettres et de chiffres

Il peut y avoir des dizaines d'autres façons de l'écrire, mais ça dépend
vraiment de ce que cherches vraiment à faire...

Jacques.

Avatar
Nicolas George
"Jacques Caron" wrote in message :
$index_start =~ /(w+)/ && ($index_start = $1); # récupérer la première
série de lettres et de chiffres


Pesonnellement, je préfère :

my ($index_start_filtered) = $index_start =~ /(w+)/;

(utiliser le résultat de la capture directement plutôt que $1, et ne pas
réutiliser un nom de variable)

Ceci dit, s'il s'agit de paramètres passés à un script CGI, un rejet plus
agressif des entrées invalides me semble souhaitable.

Avatar
Alexandre Jaquet
Salut,

On Thu, 14 Jul 2005 14:27:56 +0200, wrote:

$index_start =~ /^([w.])$/;



Ce genre d'instruction ne fait rien. Il regarde si ton $index_start
correspond à la regexp donnée ou pas, et puis il jette le résultat. Pas
super utile. En plus ta regexp, euh... Elle vérifie que la variable
elle contient une lettre ou n'importe quel caractère (et un seul). Je
ne suis vraiment pas convaincu que ce soit ce que tu cherches.

Je pense qu'il te faudrait plutôt quelque chose comme:

$index_start =~ s/W//g; # supprimer tout ce qui n'est pas une lettre
ou un chiffre

ou

$index_start =~ /(w+)/ && ($index_start = $1); # récupérer la
première série de lettres et de chiffres

Il peut y avoir des dizaines d'autres façons de l'écrire, mais ça
dépend vraiment de ce que cherches vraiment à faire...

Jacques.


Merci :) Si quelqu un savait en fait comment supprimer tous les char non
alphanuméric SAUF les espaces ca serait parfait


Avatar
Michel Rodriguez
Alexandre Jaquet > wrote:

Merci :) Si quelqu un savait en fait comment supprimer tous les char non
alphanuméric SAUF les espaces ca serait parfait


Alphanumerique, ces jours ci c'est assez vague. Est-ce que ca inclut les
characteres accentues? les ideogrammes? les nombres japonais? Regarde du
cote de perlunicode ou peut etre de POSIX pour trouver la definition qui
te va bieng.

--
mirod

Avatar
Jacques Caron
Salut,

On Fri, 15 Jul 2005 06:54:53 +0200, wrote:

Merci :) Si quelqu un savait en fait comment supprimer tous les char non
alphanuméric SAUF les espaces ca serait parfait


Suivant ta définition de "alphanumérique":

- on ne garde que les lettres ASCII pures (pas d'accents, etc.):
$truc =~ s/[^a-z0-9]//ig;

- on garde aussi les caractères accentués et toutes sortes de caractères
non latins:
$truc =~ s/[^w ]//g;

Jacques.

Avatar
Alexandre Jaquet
Salut,

On Fri, 15 Jul 2005 06:54:53 +0200, wrote:

Merci :) Si quelqu un savait en fait comment supprimer tous les char
non alphanuméric SAUF les espaces ca serait parfait



Suivant ta définition de "alphanumérique":

- on ne garde que les lettres ASCII pures (pas d'accents, etc.):
$truc =~ s/[^a-z0-9]//ig;

- on garde aussi les caractères accentués et toutes sortes de
caractères non latins:
$truc =~ s/[^w ]//g;

Jacques.



merci :)


Avatar
Jul
Il se trouve que Nicolas George a formulé :
Alexandre Jaquet wrote in message
<42d65a51$0$1152$:
merci tu sais peut être également pourquoi lorsque je fais ceci <snip>
mais les char non alphanuméric sont toujours présent
quelqu un aurait une idée pourquoi ?


Pourquoi ne le seraient-ils pas ? Manifestement, tu n'as pas bien compris la
sémantique de l'opérateur de match m/.../ : il ne change en aucun cas la
chaîne traitée.


Histoire de compléter ci-dessus, m/.../ renvoi 1 si l'expression
régulière s'applique à la chaîne testée, 0 si elle ne peut s'exécuter.
Elle n'est utile que dans le cas d'une instruction conditionnelle et
pour récupérer des tronçons de chaîne par le moyen de parenthèses
incluses dans l'expression régulière puis utilisées par les variables
$1-$9.

--
Jul... réapparru comme par enchantement


1 2