Intégration perl/apache

dans un fichier de configuration d'apache, ajouter: Options ExecCGI dans un <Directory>

Tutoriel

1ere ligne d'un script perl : #! + compilateur utilisé
Ex: 
#!/usr/bin/perl

Commentaires : après le signe dièse : #
Ex:
#Voici un commentaire

Les instructions finissent par un point-virgule : ;
Ex:
instr;

Utilisation de librairie : 
Fonction: use;
Syntaxe : use nom_lib;
nom_lib : nom de la librairie
Note : CGI et DBI sont des librairies fréquemment utilisées 

Variable : 
précédé par un signe de dollar : $
Affectation: signe égal : =
Ex: $p = 5;
La valeur de $p est 5.

Tableau :
précédé par un Arobas : @
@tab = ('val1', 'val2'[, ...]);

Accès à un élément d'un tableau
$tab[indice];
 indice : premier élément = 0
 $#tab : dernier indice d'un tableau

Chaîne de caractère entouré par des guillemets '' ou double-guillemets ""
"etudiants";
'allo';

Concaténation :
avec le point : .
$p = "allo "."toi";
$p = "Je t'ai dit : «".$p."»"; // $p est égal à "Je t'ai dit «allo toi»"

Variable dans une chaine:
 Exemple:
  $nom = "Toi!"
  $p = "Salut $nom";   #$p devient : Salut Toi! 
  $p = 'Salut $nom';   #$p devient : Salut $nom à cause des guillemets simples


Fonction
Appel  : [$val_retour = ]nomFonction[([val1[, ...]])];
Exemple:
 fonction;
 fonction();
 $p=fonction();
 $p=fonction($arg1, "arg2");

Entête de fonction
sub nomFonction() {
# Les paramètres sont dans le tableau @_
# les paramètres sont aussi dans la variable $_
# si j'envoie : $res->{NAME} je le met dans un tableau      ???????
# comme ceci : @nom_champs =  @{$_[0]}                      ???????
# $_[0] indique le premier parametres
# @{$valeur} conversion d'une $valeur en @tableau 

 [return (valeur);]

}

Fonction perl:
On peut appelé deux instructions si la première est nulle avec le 
mot-clé "Or"
Syntaxe : nomFonction() or instruct;

 die "chaine";
  Fin du fichier et affiche le message "chaine"

 val = length(chaine);
  chaine : chaine dont on veut connaitre la longueur
  val    : longueur de la chaine
  
 print chaine;
  chaîne peut être une chaîne de forme                 : "chaine"
         peut être une châine renvoyé par une fonction : nomFonction($arg)
         peut être une variable                        : $chaine
         
 $chaine2 = substr(chaine1, depart, fin) ;
  chaine1 : chaine dont on veut une partie
  depart  : position de debut de la sous-chaine (premier caractères à la position 0)
  fin     : fin de la sous-chaine
  chaine2 : chaine resultante

Nouvel objet : $p = new CGI; # crée un nouvel objet CGI nommé $p.
Accès à un élément d'un objet
$p->fonction()

===============
Objet CGI;
Fonctions:
$p = new CGI;

$p->end_html();       # est égal à </BODY></HTML>
$p->h1([chaine])      # est égal à <H1>chaine</H1>
    chaine : chaine de caractères comprises entre la balise <h1></h1>
$p->header();         # est égal à Content-type ... : \n\n
$p->start_html();     # est égal à <HTML><BODY>
$p->param('chaine')   # permet d'accéder à la valeur d'un champ 'chaine' (envoyer 
                        par l'adresse)
                       
                        Exemple : fichier.pl?nom=monNom;
                        $p->param('nom') est égal à "monNom";

===============
Fonction DBI;
Fonctions:
$retourConnexion = DBI->connect(type_basedonnee, nomUtilisateur, [autre]);

$retourConnexion : pointeur retourné après la connexion
type_basedonnee: Chaîne de caractères définissant le type de base de données et 
                 le nom de la base de données.
                 Exemple : "dbi:Pg:dbname=root" 
                            dbi:Pg             #type de base Postgres
                            dbname=root        #nom de la base est root
nomUtilisateur: Nom d'utilisateur de la base de données
[autre]       : ???

Objets:
$retourConnexion:
 Fonctions:

 $retourConnexion->prepare(commande_sql);
  Préparation d'une commande SQL
  commande_sql : Est une chaine de caractère contenant une commande SQL
                 Ex: $retourPrepare->prepare("insert into nomTable ("numero, nom") values ('1', 'monNom')"); 

$retourPrepare:
  Fonctions:
  $retourPrepare->execute();
   Exécution d'une commande SQL (déjà préparer)

   @tableau = $retourPrepare->fetchrow();
   Renvoie les valeurs retournées par une requêtes SQL dans un tableau.

   $retourNAME = $retourPrepare{NAME}
   $retourNAME représente les titres des champs.
   
   
Variables:
$DBI::errstr; // erreur lors d'un accès à une base de données.


==========
Condition

Comparaison 
chaine1 eq chaine2 : test l'égalité entre deux chaîne

Condition
if ( condition ) { 
 instruction;
}
[ else {} ]

instruction1 or instruction2; si instruction1 est faux, instruction2 est exécuté.

Boucles:

foreach(@tableau) {};
 @tableau représente un tableau d'élément.
          chaque élément du tableau à chaque tour peut être accédé
          par la variable "$_"
 Exemple:
  foreach(@tableauNote) {
   print "Note : $_";
  }
  
foreach(valeur..valeur2) {};
# la valeur rendu est stocké dans la variable "$_"

foreach (0..5) {
 print $_;
 # $_[$_ + 1] ?????
}
sub aff_entete_champs()
{	
    @nom_champs =  @{$_[0]} ;	#caster le param en tableau
    foreach (@nom_champs){
	print "<td><b>$_</b>";
}


  return ( );
}

sub envoyer_formulaire(){
    @nom_champs =  @{$_[0]} ;	#caster le param en tableau
    @contenu	=  $_[1] ;
    print '<form method="post" action="script.pl">'."\n";
    print '<table border="1" summary="liste de champs">';
    foreach (0..$#nom_champs){	
	print "<tr><td>".$nom_champs[$_]. " ";
	print "<td><input type=\"text\" name=\"$nom_champs[$_]\" value=\" $_[$_ + 1]\"></td>";    
	print '</tr>';
    }
    print '</table>';
    print '<input type="submit" name="bouton" value="Confirmer">';
    print '</form>';
}
  

Hyperliens...

Ajouter votre commentaire