Bonjour à tous,

je débute en PERL et j'ai un problème avec une expression régulière, malgré la documentation, je ne comprends pas bien comment ça marche :

Alors en fait, dans un fichier CSV, j'ai une liste complète d'oiseaux. Ce que j'ai fait pour le moment, c'est donc ouvrir le fichier, parcourir le fichier pour insérer chaque nom d'oiseau dans une liste, trier la liste, mettre chaque élément de la liste dans une liste déroulante, et l'afficher.

Maintenant, j'essaye de reprendre ce principe pour n'afficher que les oiseaux commençant par une certaine lettre, donc je reparcours ma liste d'oiseaux, et si ça commence par une certaine lettre, j'insère la valeur dans une seconde liste, je construis ma liste déroulante et je l'affiche.

Le problème c'est que je n'arrive pas à bien gérer mon expression régulière.

J'ai mis ça en condition :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ($birds[$i] =~/^[aA]/)
qui me retourne bien tous les oiseaux commençant par la lettre a ou la lettre A

mais si j'essaye avec la lettre suivante, b, et que je mets donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ($birds[$i] =~/^[bB]/)
, là j'ai les A et les B ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ($birds[$i] =~/^[cC]/)
, là j'ai aussi que les A et les B ...

donc je ne vois pas ce qui cloche

voici mes qq lignes de mon script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl
 
print "Content-type: text/html\n\n";
 
open (FICHIER,"liste.csv") or print("Le fichier n'existe pas !");
@birds = ();
my $form;
while ($ligne = <FICHIER>){
    chomp($ligne);
	push (@birds,$ligne);
}
@birds=sort(@birds);
close FICHIER;
 
my $longueur = @birds;
for($i=0;$i<$longueur;$i++)
{
    $form=$form."<option value='@birds[$i]'>@birds[$i]</option>";
} 
$listfinale="<form method='post'><select name='birds'>" .$form."</select></form>";
print $listfinale;
 
@birdsspec=();
$form="";
for($i=0;$i<$longueur;$i++)
{
	if ($birds[$i] =~^[\aA]/)
	{ 
		push(@birdsspec,$birds[$i]);
	}
}
my $longueur = @birdsspec;
for($i=0;$i<$longueur;$i++)
{
    $form=$form."<option value='@birds[$i]'>@birds[$i]</option>";
} 
 
$listfinale="";
$listfinale="<form method='post'><select name='birds'>" .$form."</select></form>";
print $listfinale;
Merci à tous ceux qui pourront me dépanner

Slyv