FAQ PerlConsultez toutes les FAQ
Nombre d'auteurs : 18, nombre de questions : 250, dernière mise à jour : 29 octobre 2015 Ajouter une question
Bienvenue sur la FAQ Perl. Cette FAQ a pour vocation de vous enseigner ou de vous faire revoir les notions élémentaires de ce fantastique langage. Perl est très utilisé dans différents domaines depuis la gestion système, le réseaux, l'administration de bases de données, le web (CGI), la bureautique, la conception d'interfaces graphiques ou des contextes scientifiques telle la bioinformatique. Nous espérons que cette FAQ vous sera d'une grande utilité.
Vous souhaitez participer à l'amélioration de cette FAQ, n'hésitez pas !! Commentez
Bonne lecture !
Le module DBI (database interface) permet de faire des connexions à une ou plusieurs bases de données telles Mysql, Postgresql, Oracle, Sybase... De ce fait, il vous sera possible d'intégrer des requêtes SQL dans vos scripts.
Petit rappel : n'oubliez pas d'installer le module DBI et le driver. Voici une liste de commandes à inclure dans le code Perl pour l'accès aux bases de données.
Code perl : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | use DBI; # En début du programme, il permet de faire appel au module DBI et # spécifie qu'on va faire un accès aux bases de données. $db = DBI->connect( "dbi:mysql:toto", 'login', 'mot_de_passe' ); # Requêtes du genre "create...", "update...", "insert into..." => $db->do("requête"); $db->prépare("requête"); # préparation de la requête $db->exécute(); # exécution de la requête $db->fetchrow_array(); # ligne retournée par la requête (ou lignes dans une boucle) $db->finish(); # fin de la requête # Requêtes du genre "select..." Dans ce cas, 4 étapes doivent être exécutées : # Connexion à une base de données mysql s'appelant "toto" et dont l'accès nécessite un # login et mot de passe. Exécution d'une requête SQL. En fonction du type de requête, # la syntaxe n'est pas la même. On différentie deux types d'écriture. $db->disconnect; # pour se déconnecter de la base de données en fin de programme. |
Code : | Sélectionner tout |
1 2 3 4 5 6 | titre |acteur |jour --------------------------------- |shrek |eddy |lundi | |couleur |hopkins |mardi | |coup_foudre |robert |mercredi| --------------------------------- |
Code perl : | Sélectionner tout |
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 | #!/usr/bin/perl use strict; use warnings; use DBI; #connexion à la base de données postgresql premieredb my $dbp = DBI->connect( "dbi:Pg:dbname=premieredb", "login", "mot_de_passe" ) or die "connexion impossible !"; #insertion d'une donnée $dbp->do("insert into film values ('test_titre', 'test_acteur','test_jour');") || die "pb de requête : $DBI::errstr"; #requete postgresql my $requete = "select acteur, jour from film;"; #prépare la requête sql my $version = $dbp->prepare($requete); #exécution de la requête sql $version->execute() || die "pb de sélection : $DBI::errstr"; while ( my ( $acteur, $jour ) = $version->fetchrow_array ) { print "result: $acteur du jour $jour\n"; } #spécifie la fin de la requête $version->finish(); # déconnexion à la base de données $dbp->disconnect(); |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | result: eddy du jour lundi result: hopkins du jour mardi result: robert du jour mercredi result: test_acteur du jour test_jour nouvelle table titre |acteur |jour ------------------------------------ |shrek |eddy |lundi | |couleur |hopkins |mardi | |coup_foudre |robert |mercredi | |test_titre |test_acteur|test_jour| ------------------------------------ |
Le module CGI (Common Gateway Interface) est particulièrement utile pour l'écriture de pages Web au format HTML mais surtout à la récupération et au traitement de données provenant de formulaires. Prenons un exemple simple. Soit la page HTML suivante notée accueil.html :
Code html : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | <HTML> <BODY> Rentrez votre prénom : <BR> <FORM NAME="form" ACTION="/cgi-bin/script.pl" METHOD="POST"> <INPUT TYPE="text" NAME="prenom"> <INPUT TYPE="submit" VALUE="Envoyer"> </FORM> </BODY> </HTML> |
Code perl : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/usr/bin/perl use strict; use warnings; use CGI; my $cgi = new CGI; # Création de l'entête de la page web print $cgi->header(); print $cgi->start_html( -title => 'Titre de ma page', ); # Recupération du prénom my $prenom = $cgi->param("prenom"); print "Bonjour, votre prénom est : <b>$prenom</b><br><br>\n\n"; print "Merci"; # Fermeture de la page web print $cgi->end_html; |
Il arrive souvent que vous ayez ce message : Internal Server Error.
Ceci indique qu'il y a une erreur dans votre script CGI. Le premier réflexe à avoir est d'aller regarder ses fichiers log.
Le chemin vers le fichier log est indiqué dans le fichier de configuration de votre Apache. C'est le fichier httpd.conf, apache.conf ou apache2.conf... tout dépend du serveur Apache que vous avez installé.
Sous EasyPHP :
- Fichier de configuration : C:\Program Files\EasyPHPX-X\conf_files\httpd.conf ;
- fichier log : C:\Program Files\EasyPHPX-X\apache\logs\error.log.
Sous Linux :
- Fichier de configuration : faites un find httpd.conf ou find apache.conf ou apache2.conf ;
- fichier log : c'est souvent /var/log/apache(2)/errors.log.
A vous de chercher.
Lisez le fichier log, et essayez de comprendre le message d'erreur Perl.
Pensez à vérifier que l'entête HTML est bien créé dans votre script CGI, que les fins de lignes de vos programmes sont bien des retours chariots Linux et non Windows ( Compatibilité Unix/Mac/Linux/Windows des fichiers (^M)).
Les erreurs les plus fréquentes que l'on peut trouver lors d'une demande d'ouverture de page web :
- erreur 400 : mauvaise requête (Bad request) ;
- erreur 401 : autorisation refusée (Authorization) ;
- erreur 403 : répertoire interdit (Forbidden) ;
- erreur 404 : fichier non trouvé (File not found) ;
- erreur 500 : erreur de configuration (Internal server error).
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.