Bonjour,
Est-ce que quelcun pourrait m'aider à trouver la réponse s'il-vouz-plait?
J'ai 2 fonctions, premiere: push_site qui traite une liste de caracteres et dès qu'elle trouve une chaine de caracteres différente à l'autre, elle met la valeur trouvé dans une liste.
Et une autre fonction: traiter_donnees qui fait appel à cette premiere fonction chaque fois qu'elle trouve ce 3 caracteres et elle les affiche.

Maintenant il y a une autre fonction la meme que traiter_donnees mais pour chaque nouvelle chaine de caracteres elle fait autre chose...
voila un bout de cette fonction:

if ($grenoble==1) {$total++;}
if ($site=~m/tun/) {$tun++; }
if ($site=~m/zav/) {$zav++; }



et les chaine de caracteres pour le moment il y en a 4 (tun, zav.....)
mais ca peut etre plus et il faudrait que cela se rajoute dynamiqment dans mon tableaux existant, en sachant encore une fois que la 1ere fonction cherche deja les differentes chaines de ces fameux caracteres dans une liste ....

Merci en avance!!!!



@list="";
sub push_site {
my ($site)= @_;
foreach $val(@list) { if ($site =~ /$val/){return @list;}
}
push (@list, $site);
return @list;
# printf {STDOUT} ( "@list \n" )
}

sub traiter_donnees {
my ($fichier) = @_;
$lic_total=0;
$lic_tunis=0;
chomp $fichier ;
open (FIC_ENCOURS, "<$fichier") or die "erreur d'accès fichier : $!\n" ;
# ---- Début du bloc de traitement des donnes -------------
while (<FIC_ENCOURS>) {
if ($_ =~ m/ .*CatapultC Synthesis [-]+ (.*) [-]+\n/ ) {
$SITE38 = $1;
if ($SITE38 =~ m/GRENOBLE/) { $GRENOBLE_SITE_FOUND = 1 ; }
else { last;}
}
elsif ($_ =~ m/.*--->[\t\s]+[a-z]+[\t\s]+([a-z]{3}). *start (.*) \n/ ) {
$site = $1;
$date=$2;
@retour_list = push_site ($site);
}
else {#on fait rien;
}
}
#----Fin du bloc de traitement -------------------------
$string = sprintf "%20s %3s %3s \n", $dat, $lic_total, $lic_tunis;
printf {STAT} ("$string");
close (FIC_ENCOURS);

#printf ("***@retour_list \n");
return @retour_list;
}