Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Discussion: Problème avec use

  1. #1
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 25
    Points : 16
    Points
    16

    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!

  2. #2
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 25
    Points : 16
    Points
    16

    Par défaut

    Un petit up...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •