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

Langage Perl Discussion :

Utilisation de modules


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut Utilisation de modules
    Bonjour ,

    Je "coince" devant l'utilisation d'un module qui fait appel à une fonction d'un autre module :

    j'ai un module nommé module.pm dans lequel j'ai une fonction FormeDate() fonctionnelle

    Dans un autre module nommé fonctions.pm j'ai une fonction JoursCtrl() qui fait appel à FormaDate()

    Lorsque j'execute mon script en utilisant la fonction JoursCtrl() j'ai un message d'erreur : Undefined subroutine &fonctions::FormeDate called at /LIVR/DERS/OD/lib/fonctions.pm line 701.

    Comment puis je faire pour utiliser cette fonction du premier module ?

    Sachant que dans mon module fonctions.pm je déclare le module module.pm :

    use lib "echange/URS/scripts/lib";
    use module ;

    Merci pour votre aide !!

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonsoir,
    est-ce que la fonction FormeDate est exportée par le module module.pm?

  3. #3
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Oui , quand je l'utilise dans un script elle fonctionne correctement , pas contre dans un autre module , nada .

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    A priori, ça devrait marcher. Sans voir le code, je n'ai pas d'idée. Peux-tu montrer une version simplifiée de ton code mettant le problème en évidence?

  5. #5
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    fonctions.pm :

    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
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    package fonctions;
    use vars qw(@ISA @EXPORT);
    use Exporter;
    use lib "/LIVR/DERS/OD/lib";
    use modules ; #/echange/LIVR/DERS/scripts/lib
    use Env;
    use fonctions;
    use Cwd;
    use POSIX;
     
    @ISA = qw (Exporter);
    @EXPORT = (
        'Ctrl_Plateforme',
        'GetFilesList',
        'Color',
        'Tableau',
        'Centre',
        'Gauche',
        'Droite',
        'Uniq',
        'Quantieme',
        'Conv_date',
        'Ascii',
        'EnvoyerMail',
        'Feries',
        'is_fr_holiday',
        '_compute_date_from_easter',
        'get_pentecost',
        'get_ascension',
        'get_easter',
        'gregorian_easter',
        'Nb_jour_ctrl'
    );
     
     
    sub Nb_jour_ctrl {
     
        my ($decalage) = @_;
     
        if ( $decalage <= 0 ) {
            ## pas de changement
        }
        elsif ( $decalage >= 0 ) {
            $jour = substr($decalage,0,2);
            $mois = substr($decalage,2,2);
     
            $an = substr($decalage,4,2);
            $mois --;
            $an = $an + 100;
            my $seconde = mktime(0,0,12,$jour,$mois,$an,0,0,1);
            my $seconde2 = time();
            $decalage = int(($seconde - $seconde2) / 86400);
        }
        else {
            $decalage = 0;
        }
     
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time() - 60*60*24 * $decalage * -1);
        my $jour_c = 0;
        my $jour_f = 0;
        my $NbJour = 1;
        my @tabdate = split(/ /,$date_lettre);
        my $annee = $year + 1900;
        my @ferie = Feries($annee);
        my $jour = sprintf("%02d",$mday);
        my $mois = sprintf("%02d", $mon);
        my $date_chiffre = $jour . "/" . $mois . "/" . $annee;
     
        for ( $i=0 ; $i<=6 ; $i++ ) {
            my $wday1 = (localtime(time() - 60*60*24 * ($decalage - $i -1) * -1))[6];
     
            if  ( $wday1 == 6 || $wday1 == 0 ) {
                $jour_c = 1;
            }
            else {
                $jour_c = 0;
            }
     
            if ( FormeDateOpe ($decalage - $i - 1) ~~ @ferie ) {   
                $jour_f = 1 ;
            }
            else {
                $jour_f = 0 ;
            }
     
            if($jour_c == 1 || $jour_f == 1){
                $NbJour ++;
            }
            elsif ( $jour_c == 0 && $jour_f == 0 ) {
                last;
            }  
        }
        return $NbJour;
    }

  6. #6
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    modules.pm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # formate date en jj/mm/aaaa
    # de '8/5/02' -> '08/05/2002'
    # de '-1'     -> '14/07/2002'  (si date du jour 15 Juillet 2002)
    #             -> '15/07/2002'  (pas de parametre)
    #
    sub FormeDateOpe {
       my($param) = @_;
     
       @var = split(/\//,$param);
     
       TesteDate(@var);
       }

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par olivier1969 Voir le message
    fonctions.pm :

    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
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    package fonctions;
    use vars qw(@ISA @EXPORT);
    use Exporter;
    use lib "/LIVR/DERS/OD/lib";
    use modules ; #/echange/LIVR/DERS/scripts/lib
    use Env;
    use fonctions;
    use Cwd;
    use POSIX;
     
    @ISA = qw (Exporter);
    @EXPORT = (
        'Ctrl_Plateforme',
        'GetFilesList',
        'Color',
        'Tableau',
        'Centre',
        'Gauche',
        'Droite',
        'Uniq',
        'Quantieme',
        'Conv_date',
        'Ascii',
        'EnvoyerMail',
        'Feries',
        'is_fr_holiday',
        '_compute_date_from_easter',
        'get_pentecost',
        'get_ascension',
        'get_easter',
        'gregorian_easter',
        'Nb_jour_ctrl'
    );
     
     
    sub Nb_jour_ctrl {
     
        my ($decalage) = @_;
     
        if ( $decalage <= 0 ) {
            ## pas de changement
        }
        elsif ( $decalage >= 0 ) {
            $jour = substr($decalage,0,2);
            $mois = substr($decalage,2,2);
     
            $an = substr($decalage,4,2);
            $mois --;
            $an = $an + 100;
            my $seconde = mktime(0,0,12,$jour,$mois,$an,0,0,1);
            my $seconde2 = time();
            $decalage = int(($seconde - $seconde2) / 86400);
        }
        else {
            $decalage = 0;
        }
     
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time() - 60*60*24 * $decalage * -1);
        my $jour_c = 0;
        my $jour_f = 0;
        my $NbJour = 1;
        my @tabdate = split(/ /,$date_lettre);
        my $annee = $year + 1900;
        my @ferie = Feries($annee);
        my $jour = sprintf("%02d",$mday);
        my $mois = sprintf("%02d", $mon);
        my $date_chiffre = $jour . "/" . $mois . "/" . $annee;
     
        for ( $i=0 ; $i<=6 ; $i++ ) {
            my $wday1 = (localtime(time() - 60*60*24 * ($decalage - $i -1) * -1))[6];
     
            if  ( $wday1 == 6 || $wday1 == 0 ) {
                $jour_c = 1;
            }
            else {
                $jour_c = 0;
            }
     
            if ( FormeDateOpe ($decalage - $i - 1) ~~ @ferie ) {   
                $jour_f = 1 ;
            }
            else {
                $jour_f = 0 ;
            }
     
            if($jour_c == 1 || $jour_f == 1){
                $NbJour ++;
            }
            elsif ( $jour_c == 0 && $jour_f == 0 ) {
                last;
            }  
        }
        return $NbJour;
    }
    N'y aurait-il pas une erreur de chemin dans ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use lib "/LIVR/DERS/OD/lib";
    use modules ; #/echange/LIVR/DERS/scripts/lib
    Cela ne paraît pas cohérent.

    Et dans ton post d'origine, tu as encore autre chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use lib "echange/URS/scripts/lib";
    use module ;
    Par ailleurs, selon tes posts, ton module s'appelle parfois module.pm (singulier) et parfois modules.pm (pluriel). Et ta fonction FormeDate et FormeDateOpe.

    Enfin, modules.pm ne semble pas exporter FormeDateOpe (ni, d'ailleurs, FormeDate).

    Le problème réel n'est peut-être rien de tout cela, mais si tu n'es pas très précis dans ta présentation du problème, on va avoir du mal à t'aider.

Discussions similaires

  1. Decompression d'un fichier sans utiliser les modules du CPAN
    Par choubiroute dans le forum Modules
    Réponses: 6
    Dernier message: 10/03/2006, 14h20
  2. [VB]utilisation des modules en vb
    Par zidenne dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 11h19
  3. erreur lorsque j'utilise le module session
    Par vbcasimir dans le forum Modules
    Réponses: 13
    Dernier message: 14/10/2005, 13h41
  4. utilisation du module WWW::Hotmail
    Par mouette_fstt dans le forum Modules
    Réponses: 2
    Dernier message: 22/07/2005, 16h58
  5. [web] Probleme de passe de variable qd j utilise un module TK
    Par Slippers dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 19/04/2005, 17h48

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