IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Problème avec le shebang


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut Problème avec le shebang
    Bonjour,

    J'ai un petit problème avec un script perl.

    Voila j'ai un script principal 'template.pl' situé dans le dossier CGI-BIN qui appel plusieurs modules placés dans des sous dossiers grâce à un require.

    Je ne trouve pas le bon chemin à mettre pour le shebang des modules, j'ai essayé sa mais sa marche pas : #!../usr/bin/perl -w

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Les modules n'ont pas besoin de shebang, le shebang sert à indiquer au shell avec quel programme interpréter un fichier texte exécutable. On n'exécute jamais directement (la plupart) des modules, donc ils n'ont pas besoin de shebang.

    Si tu as un problème, c'est plutôt parce que tes modules ne sont pas dans des répertoires de @INC (la liste des répertoires où Perl cherche les modules que tu require() ou use() ). Pour corriger cela, mets "use lib 'le répertoire où sont tes modules';" avant tes require().
    (exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use lib './perlLib';
    require MyTools;
    )

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    Sa ne marche pas

    La structure de mes fichiers est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       template.pl
          |_________secure07(dossier)
                              |_________moduleSecure.pl
    Voici l'entête de mon programme principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/bin/perl	
     
    # Appel des modules nécessaires		   
    use CGI;
    use CGI qw(:standard);
    use CGI::Session;	
     
    use Date::Manip; 
     
    require ("cgi-lib.pl");
    &ReadParse;
    &loadcompte($in{id});
    &loadlangue;			   
     
    #################################################
    if ($compte[28] ne "750") {$compte[28] eq "700";}
    $largeur=$compte[28];
    ################################################# 
     
    my ($html) = new CGI;	  	
     
    # APPEL DU MODULE SECURE ####################
      # On indique d'abord lemplacement du module
      use lib './secure07';
      require "moduleSecure.pl";
    #############################################
     
    ...................
    Voila je ne vois pas d'ou vient l'erreur ...

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Un module ça se termine par ".pm", ça contient un package de même nom que le module et ça se charge ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use lib './secure07';
    require moduleSecure;
    par exemple.

    Par ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    require ("cgi-lib.pl");
    &ReadParse;
    &loadcompte($in{id});
    &loadlangue;
    ???
    Tu utilises le module CGI, pourquoi charger cgi-lib cette horreur des temps anciens ?

    --
    Jedaï

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    J'utilise ce vieux module parce que je travail sur un gros projet débuté il y a 8 ans par une autre personne...

    Est-ce que si je décide d'utiliser uniquement CGI, j'aurais de grosses modifications à faire?

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Non, CGI a été créé de façon à permettre une compatibilité ascendante avec cgi-lib.pl (minus les bugs). Il ne devrait pas y avoir trop de problèmes.

    --
    Jedaï

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    Alors voila j'ai fais ce que tu m'as dit :

    - renomer mon module en .pm
    - copier les lignes pour l'appel du module

    Quand je teste mes script avec raynette, je n'ai aucune erreur sur mon script template.pl, et sur mon script moduleSecure.pm j'ai uniquement les avertissements suivants :

    Test 1 (chmod) : OK
    Test 2 (shebang) : La première ligne de votre script doit commencer par :#! suivi de l'emplacement de l'interpréteur Perl
    Le script ne peut pas être éxécuté par le serveur dans l'état.
    Test 3 (envoi FTP) : Le fichier contient des caractères de fin de ligne de type MSDOS/Windows,
    ce qui n'est pas compréhensible par votre serveur de type Unix.
    Retéléchargez le script par FTP en mode ASCII/texte. Voyez l'aide sur Raynette.fr pour plus de détails.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo