Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Web
Web Toutes vos questions sur la construction de pages web en Perl (CGI, Ajax, mod_perl, sessions, ...) Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 01h20   #1
thierry.d
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 23
Points : 13
Points : 13
Par défaut Problème avec use

Bonsoir!

Débutant en Perl, je rencontre un problème avec l'utilisation de 'use' dans un script 'index.cgi'.

Ce script a pour simple but d'afficher le contenu d'un répertoire sous forme de liens cliquables (il s'agit en fait de parcourir le répertoire 'documentation' dans lequel se situent des fichiers pdf).

Pour ce faire, j'ai créé quelques fonctions.

Ces fonctions, quand elles sont placées dans le script de départ (index.cgi), me donnent le résultat attendu, à savoir l'affichage du contenu du répertoire dans mon navigateur internet.

En revanche, lorsque que - par souci de propreté - je place ces fonctions dans un autre fichier un répertoire plus bas (fct/Functions.pm) et que j'utilise 'use lib' et 'use' dans 'index.cgi', l'affichage du résultat n'est plus le même puisque j'obtiens en définitive la version "code source de la page" à l'écran.

Il semble donc que l'appel aux fonctions ne soit pas "interprété" ou, en tout cas, pas affiché comme du html dans mon navigateur.

Pour mieux comprendre, voici:

1. Le script index.cgi:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/local/bin/perl -w
 
use warnings;
use 5.010;
use lib ("fct/");
use Functions;
 
doHeader("Titrealacon","doc");
 
doHtml("
<body>
 
<div id=\"main\">
<h1>.: Documentation :.</h1>
	<ul>");
 
 
displayDir("documentation");
 
doHtml("
	</ul>
</div>
</body>
</html>");
2. Le contenu de mon fichier ('package') de fonctions fct/Functions.pm:

Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package Functions;
 
#use strict;
use warnings;
use Exporter;
 
our @ISA= qw( Exporter );
 
# ceci est exporté par défaut
our @EXPORT = qw(displayDir doHeader doHtml);
 
# ceci PEUT être exporté (disponibles avec 'require')
our @EXPORT_OK = qw(displayDir doHeader doHtml);
 
 
#################################################################### affichage du contenu d'un répertoire sous forme de <li> ###
sub displayDir
{
	my ($directory) = @_;
 
	opendir(DIR, $directory);
	@files = readdir(DIR);
	closedir(DIR);
 
	# afficher une liste triée des fichiers du tableau @files
	foreach $file (sort(@files)) 
	{
		next if ($file eq "." or $file eq "..");
 
print <<EOF;
		<li>
			<a href="$directory/$file">$file</a>
		</li>
 
EOF
	}
	return;
}
 
############################################ fonction générant un header html avec deux arguments: titre, nom du fichier css ###
sub doHeader
{
	my ($title, $cssFile) = @_;
 
	print <<EOF;
	<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
	<html xmlns=\"http://www.w3.org/1999/xhtml\">
 
	<head>
		<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />
		<title>.: $title :.</title>
		<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"img/icon.png\" />
		<link href=\"css/$cssFile.css\" rel=\"stylesheet\" type=\"text/css\" />
	</head>
EOF
	return;
}
 
############################################################## fonction générant du html avec l'argument passé à la fonction ###
sub doHtml 
{
	my ($html) = @_;
	print <<EOF;
	$html
EOF
	return;
}
 
############################################################ nécessaire parce que perl contrôle le retour d'une 'true value' ###
1;
3. Le résultat tel qu'affiché dans mon navigateur:
Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
<head>
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
		<title>.: Titrealacon :.</title>
		<link rel="shortcut icon" type="image/x-icon" href="img/icon.png" />
		<link href="css/doc.css" rel="stylesheet" type="text/css" />
	</head>
 
<body>
 
<div id="main">
<h1>.: Documentation :.</h1>
	<ul>
		<li>
			<a href="documentation/debuter.pdf">debuter.pdf</a>
		</li>
 
		<li>
			<a href="documentation/gtk-perl.pdf">gtk-perl.pdf</a>
		</li>
 
		<li>
			<a href="documentation/guide-perl.pdf">guide-perl.pdf</a>
		</li>
 
		<li>
			<a href="documentation/guide-programmation-perl.pdf">guide-programmation-perl.pdf</a>
		</li>
 
		<li>
			<a href="documentation/installation-modules.pdf">installation-modules.pdf</a>
		</li>
 
	        <li>
			<a href="documentation/perl-all-fr-pdf.pdf">perl-all-fr-pdf.pdf</a>
		</li>
 
		<li>
			<a href="documentation/perl-poo-woufeil.pdf">perl-poo-woufeil.pdf</a>
		</li>
 
		<li>
			<a href="documentation/perl-poo.pdf">perl-poo.pdf</a>
		</li>
 
		<li>
			<a href="documentation/perldbi.pdf">perldbi.pdf</a>
		</li>
 
		<li>
			<a href="documentation/perlxml.pdf">perlxml.pdf</a>
		</li>
 
	</ul>
</div>
</body>
</html>
Je ne sais pas où je fais une boulette!

Merci d'avance pour vos réponses!
thierry.d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 01h05   #2
thierry.d
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 23
Points : 13
Points : 13
Un petit up...
thierry.d est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h51.


 
 
 
 
Partenaires

Hébergement Web