Un peu de PERL ...

Résolu/Fermé
ollie314 Messages postés 145 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 26 octobre 2007 - 27 mars 2005 à 20:36
ollie314 Messages postés 145 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 26 octobre 2007 - 2 avril 2005 à 01:23
Bonjour ...

Je suis en train de faire un petit programme qui test si un email est valide. Je fais ç via des expression regulière ( motifs). Mais je debute en PERL et manifestement ça se voit :0). Voici le programme.

#!/usr/bin/perl

sub bon_email
{
if($_==([a-zA-Z0-9\-_\.]{1,}@[a-zA-Z0-9\-_\.]{1,}\.[a-zA-Z]{2,}(.)*)
{
#on retourne 1 si le mail est valide
return 1;
}
else
{
#0 sinon
return 0;
}

}#fin de la fonction

print "saisissez votre email\n";
$mail=<STDIN>;
chomp($mail);
$res=bon_email($mail);
if ($res==1)
{
print"email_ok";
}
else
{
print "email non valide";
}

voilà à la compilation, l'expression régulière ne passe pas
je pense également que la fonction est mal formatée.
Quelqun peut-il m'aider ??

Merci d'avance....

Ollie314
A voir également:

1 réponse

Utilisateur anonyme
28 mars 2005 à 01:30
Bonsoir,

Oui, il y a plusieurs fautes de parenthèses déjà.
En outre les critères de recherche s'écrivent comme ceci:
if ($_ =~ m/^a/) { }
par exemple.
Pour récupérer le premier argument d'une fonction, on utilise $_[0], le second $_[1], le troisième $_[2], et ainsi de suite.

Voici ton programme corrigé:

sub bon_email { if($_[0]=~m/[a-zA-Z0-9\-_\.]{1,}@[a-zA-Z0-9\-_\.]{1,}\.[a-zA-Z]{2,}(.)*/){
#on retourne 1 si le mail est valide
return 1;
}
else {
#0 sinon
return 0;
}

}#fin de la fonction

print "saisissez votre email\n";
$mail=<STDIN>;
chomp($mail);
$res=bon_email($mail);
if ($res==1)
{
print"email_ok\n";
}
else
{
print "email non valide\n";
}

@+
0
ollie314 Messages postés 145 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 26 octobre 2007 80
2 avril 2005 à 01:23
Bonsoir

Merci beaucoup pour le coup de main tout marche c'est nikel !!!

@+
0