Perl [cgi-bin] GET method
id : acofpjsaru
category : computer
blog : perl
created : 03/04/10 - 12:21:05

Passage d'argument dans l'adresse

Dans cet exemple les arguments sont passés directement dans l'adresse, prenons par exemple l'adresse suivante :
http://www.chaosisme.com/nano_blog_html_view_article.cgi?blog_name=unixlinux&article=2

Les argument à récuprer sont :
    • blog_name (avec la valeur unixlinux)
    • article (avec la valeur 2)

Script nano_blog_html_view_article.cgi

Voici donc le début du code du script Script nano_blog_html_view_article.cgi permettant de récupérer ces variables en G
ET

Les actions réalisées sont les suivantes :
    • Récuperer la chaine "?blog_name=unixlinux&article=2"e
    • Split la chaine pour obtenir deux chaines disctinte "blog_name=unixlinux" "article=2"
    • Pousser les valeures dans une hash table

Voici le code permettant de réaliser ces actions :n
.01#!/usr/bin/perl
.02
.03local ($buffer, @pairs, $pair, $name, $value, %FORM);
.04# Read in text
.05$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
.06if ($ENV{'REQUEST_METHOD'} eq "GET") {
.07  $buffer = $ENV{'QUERY_STRING'};
.08}
.09# Split information into name/value pairs
.10@pairs = split(/&/, $buffer);
.11foreach $pair (@pairs){
.12  ($name, $value) = split(/=/, $pair);
.13  $value =~ tr/+/ /;
.14  $value =~ s/%(..)/pack("C", hex($1))/eg;
.15  $FORM{$name} = $value;
.16}
.17$blog_name = $FORM{blog_name};
.18$article  = $FORM{article};
.19
.20print $blog_name."\n";
.21print $article."\n";


Utilisation d'un librairie pour les requêtes POST

Il peut être également interessant d'utiliser une libraire afin d'éviter le codage d'une fonction permettant de décod
der les champs envoyés en POST.

Il existe pour cela une librairie perl nommé URI::Escape

Elle est displonible à cette adresse !

Amusez vous bien !