#!/usr/bin/perl
##################################################################
# Version 2.0 du script frequence
# Recherche sur colonne nom
# Interprétation des espaces
# Minimum deux caractères demandés
###################################################################
# Recuperation depuis le formulaire méthode POST
&Acces;
# Recherche dans la base de données
&Recherche_bd($keys);
# Affichage du resultat
&Affichage;
# Routine de décodage du formulaire envoyé
sub Acces {
# acces au STDIN
read(STDIN, $save_string, $ENV{CONTENT_LENGTH}); # Yes- Use it
# dissocie la chaine de caracteres en une liste
@prompts = split(/&/,$save_string);
foreach (@prompts) {
($name,$value) = split(/=/,$_);
$name =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ tr/A-Z/a-z/;
# cree une liste associative
$fields{$name}=$value;
}
# création de la variable pour les recherches
$keys = $fields{'keys'};
}
#######################################################################
sub Recherche_bd {
# dissocie les mots cles le code du symbole + est 2b
@search_key = split(/\x2b/,$keys);
$k =0;
#######################################################################
# accede au fichier contenant la database
open(MYFILE,"frequence.csv");
while() {
# accede a chaque element
$line = $_;
@field = split (/\;/, $line);
$in_line = ($field[0]);
# uniformisation des cles de recherche
# en transformant tous les caracteres en minuscules
$in_line =~ tr/A-Z/a-z/;
$found = "yes";
foreach (@search_key) {
# cherche la cle dans l'element de l'annuaire
$pos_out = rindex($in_line,$_);
if ($pos_out < 0) {
$found = "no";
}
}
if ($found eq "yes") {
$found[$k] = $_;
$k = $k + 1;
}
}
close(MYFILE);
}
######################################################################
sub Affichage {
# entete HTTP
print("Content-Type: text/html\n\n");
# Génération du document HTML
print("Fréquence des noms de famille\n");
print("\n");
print "\n";
# Génération du formulaire
# Vous devez éditer le chemin pour l'accès au repertoire
############VOUS POUVER CHANGER ENTRE <
Fréquence des noms de famille
|
Entrer un Nom de Famille
|
|
Vous recherchez un livre
ici
|
|
HEADFORM
################### FIN DES CHANGEMENTS ####################################################
# sortie du résultat sous forme de tableau
if ( $keys !~ /^[a-z]/ ) {
print " \n";
}
elsif ( length($keys) < 2 ) {
print "
La requête doit avoir au moins deux caractères.\n";
# résultat si la réponse n'existe pas
} else {
print " ";
if($k==0) {
print " Le nom de famille $keys ne figure pas dans notre base.";
# donne le résultat
} else {
print <<"RESULT";
Vous avez $k nom(s) possible(s) |
Patromyne |
Rang |
Fréquence |
Nombre de porteur |
RESULT
for($i=0; $i <= $#found; $i++) {
($patronyme, $rang, $frequence, $nombre )=split(/;/,$found[$i]);
print <<"RESULT2";
$patronyme |
$rang |
$frequence |
$nombre |
RESULT2
}
print "
\n";
print " © Copyright 2000-2001,Librairie de la Voûte Tous droits réservés Lavoute.org \n";
}
}
}
FIN DU SCRIPT