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

Programmation et administration système Perl Discussion :

Rajouter chaque fichier dans une tableau


Sujet :

Programmation et administration système Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Rajouter chaque fichier dans une tableau
    Bonjour,

    J'apprends Perl petit à petit. Mais je suis confronté à un problème.
    Je souhaites lister les virtual host de ma config Apache et mettre chaque fichier dans un tableau.

    Donc un algo de ce genre:
    Lister fichiers
    Pour chaque fichier
    mettre fichier dans une case d'un tableau
    fin Pour.

    J'ai vu plein d'exemple pour lister des fichiers. J'ai regarder sur la FAQ, mais j'ai rien trouvé de bien. Car je voudrais surtout comprendre le code.

    Merci à vous

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Une idée ?

  3. #3
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Pas besoin, Perl fait ça tout seul comme un grand :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/perl
    opendir(DIR,"/var") or die "Echec de lecture de /var";
    @files = readdir(DIR);
    closedir(DIR);
    Tu peux rajouter ça pour vérifier le contenu de ton tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach $file (@files) {
            print "J'ai trouvé $file dans /var\n";
    }
    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Super c'est ce que je cherchais.
    Mais lorsque j'essaye de le mettre dans un dossier compresser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $saveTar -> add_files(@tabFichiersVH);
    Il me dit que les fichiers ne sont pas trouvés :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    No such file: 'default-ssl' at Sauvegarde.pl line 65

  5. #5
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Si tu exécutes le code de vérification, tu remarqueras que le contenu du tableau contient le chemin relatif des fichiers par rapport au répertoire fourni à opendir.

    Il te faut donc transformer ces chemins en chemins absolus.

    Perso, pour mon exemple, je ferais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i=0;$i<$#files;$i++) {
            $files[$i]="/var/".$files[$i];
    }
    Mais bon, y'a peut être plus élégant .... (Je me débrouille mais je ne suis pas ce qu'on appelle un mongeur ;-)

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Ahh super c'est exactement ça.
    Cependant, j'ai une erreur de sémantique.
    J'utilise le module File::Copy avec la fonction copy comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (my $i=0;$i<@tabFichiersVH;$i++)
            {
                    $tabFichiersVH[$i]="/etc/apache2/sites-available/".$tabFichiersVH[$i];
                    copy ("$tabFichiersVH[$i]", $tabFichiersVH[$i]);
    }
    Cela me copie bien mes fichiers, mais cela prends tous les dossiers /etc/apache2/sites-availables.
    Alors que je ne voudrais QUE les virtualhost. Il me renvois l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    '/etc/apache2/sites-available/default-ssl' and '/etc/apache2/sites-available/default-ssl' are identical (not copied) at Sauvegarde.pl line 63

    Je triture un peu mon code, mais la sémantique et moi ><.
    Merci ^^

  7. #7
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Ben, soit tu ouvres chaque fichier pour l'analyser et savoir si c'est un de ceux qui t'intéressent.

    Soit tu définit un plan de nommage (genre tous tes fichiers vhosts commencent par vhost-) et tu pourras tester leurs nom avec un regex avant de les traiter.

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Un regex avec tous les fichiers qui se termine par .conf sera une bonne idée.

  9. #9
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Mandraxx Voir le message
    Perso, pour mon exemple, je ferais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i=0;$i<$#files;$i++) {
            $files[$i]="/var/".$files[$i];
    }
    Mais bon, y'a peut être plus élégant .... (Je me débrouille mais je ne suis pas ce qu'on appelle un mongeur ;-)
    Je ne sais pas si c'est plus élégant, mais au moins plus direct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @files = glob("/var/*.conf")
    (ce n'est pas strictement identique, j'ai intégré la dernière réponse de MonsieurPouet).

    Voir aussi : File::Glob
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  10. #10
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Citation Envoyé par Philou67430 Voir le message
    Je ne sais pas si c'est plus élégant, mais au moins plus direct :
    Moi, en tous cas, je trouve ça plus élégant ;-)

    Merci .

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

Discussions similaires

  1. stocker le nombre de fichier de chaque type dans une table de hach
    Par niklos0 dans le forum Programmation et administration système
    Réponses: 7
    Dernier message: 24/09/2008, 15h34
  2. Réponses: 51
    Dernier message: 06/01/2008, 16h47
  3. rajout de fichier dans une table
    Par neoboy dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 23/08/2007, 11h05
  4. [debutante]Je voudrais metre chaques saisie dans une case du tableau
    Par vanilla94 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/02/2007, 12h01
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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