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 :

Comment utiliser ini en Perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Par défaut Comment utiliser ini en Perl
    Bonjour à tous,

    Dans mon code j'ai des chemins absolu je ne souhaite pas les voir apparaître dans mon code
    Voici mon code :
    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
     
    use strict;
    use warnings;
     
    sub GetFilesList
    {
            my $Path = $_[0];
            my $FileFound;
            my @FilesList=();
     
            ## Lecture de la liste des fichiers
            opendir (my $FhRep, $Path)
                    or die "Impossible d'ouvrir le repertoire $Path\n";
            my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
            closedir ($FhRep);
     
            foreach my $FileFound (@Contenu) {
                    ## Traitement des fichiers
                    if ( -f "$Path/$FileFound") {
                            push ( @FilesList, "$Path/$FileFound" );
                    }
                    ## Traitement des repertoires
                    elsif ( -d "$Path/$FileFound") {
                            ## Boucle pour lancer la recherche en mode recursif
                            push (@FilesList, GetFilesList("$Path/$FileFound") );
                    }
     
            }
            return @FilesList;
    }
    my @Files = GetFilesList ('C:/Users/baranowp/Documents/2016_01_07_08/facture/');
    foreach my $File  (@Files) { 
    	next unless $File =~ /\.txt$/i;
    	print "$File \n";
    }
    @Files = GetFilesList ('C:/Users/baranowp/Documents/2016_02_04_05/bulletin_paie/');
    foreach my $File  (@Files) { 
    	next unless $File =~ /\.txt$/i;
    	print "$File \n";
    }
    De ce fait je pense stocker tout les chemins absolu ou relatif dans un fichier d'initialisation
    mon fichier ini contient :
    [repertoire]
    $repfacture = C:/Users/baranowp/Documents/2016_01_07_08/facture/
    $repbulletin = C:/Users/baranowp/Documents/2016_02_04_05/bulletin_paie/

    Comment faire appel au fichier ini dans mon programme ? J'ai essayé avec la fonction require
    Dont voici le code :
    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
     
    use strict;
    use warnings;
     
    require fichier; ## fichier.ini##
     
    sub GetFilesList 
    {
            my $Path = $_[0];
            my $FileFound;
            my @FilesList=();
     
            ## Lecture de la liste des fichiers
            opendir (my $FhRep, $Path)
                    or die "Impossible d'ouvrir le repertoire $Path\n";
            my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
            closedir ($FhRep);
     
            foreach my $FileFound (@Contenu) {
                    ## Traitement des fichiers
                    if ( -f "$Path/$FileFound") {
                            push ( @FilesList, "$Path/$FileFound" );
                    }
                    ## Traitement des repertoires
                    elsif ( -d "$Path/$FileFound") {
                            ## Boucle pour lancer la recherche en mode recursif
                            push (@FilesList, GetFilesList("$Path/$FileFound") );
                    }
            }
            return @FilesList;
    }
    my @Files = GetFilesList my $repfacture;
    foreach my $File  (@Files) { 
    	next unless $File =~ /\.txt$/i;
    	print "$File \n";
    }
     
    @Files = GetFilesList my $repbulletin;
    foreach my $File  (@Files) { 
    	next unless $File =~ /\.txt$/i;
    	print "$File \n";
    }
    J'obtiens ce message d'erreur :
    Pièce jointe 202564

    Merci d'avance pour votre aide
    Cordialement

  2. #2
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    Bonjour,

    Je te conseille d'utiliser le module Config::Std.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    use strict;
    use Carp;
    use warnings;
    use Config::Std;
     
    read_config 'fichier.ini' => my %config;
    L'ensemble de ton fichier est stocké dans le hash. A toi ensuite de bien structurer tes données.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Par défaut
    J'ai utilisé ce que tu m'as donné mais lorsque je compile mon programme il me renvoi ce message d'erreur :

    perl -cw "script.pl" (in directory: C:\Perl\site\lib)
    Can't locate Config/Std.pm in @INC (@INC contains: c:/Perl/lib c:/Perl/site/lib .) at script.pl line 4.
    BEGIN failed--compilation aborted at script.pl line 4.
    Compilation failed.

    Alors que mon programme script.pl je l'ai enregistré dans c:/Perl/lib est ce que le fait que mon fichier.ini ne se trouvant pas dans le répertoire c:/Perl/lib peut faire en sorte que cela ne fonctionne pas ?
    Faut-il que je mette le fichier.ini dans c:/perl/lib ?


    Cordialement

  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
    Le module Config::Std n'est pas présent sur ta machine. Il faut l'installer, avec la commande cpan (ou autrement, suivant le Perl que tu utilises).

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Et surtout, tu n'as pas besoin (et ne devrait pas) installer ton script dans c:\perl\lib

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Par défaut
    La version de perl que j'utilise est : 5.6.1.

    Pourquoi il ne faut pas que mon script.pl se trouve dans c:/Perl/lib ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment utiliser des scripts Perl dans des pages Html?
    Par mahmoudelect dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 16/03/2010, 14h11
  2. Comment utiliser svn avec perl?
    Par NadyPerl dans le forum Langage
    Réponses: 6
    Dernier message: 01/10/2007, 10h05
  3. comment utiliser les API avec Perl?
    Par megapacman dans le forum Langage
    Réponses: 5
    Dernier message: 23/08/2006, 15h18
  4. Réponses: 13
    Dernier message: 25/04/2006, 09h43

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