[perl]répertoire aléatoire

Résolu
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   -  
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je pense avoir un tit problème de syntaxe sur la navigation avec perl. Je souhaite ouvrir le fichier readme.txt, celui-ci se trouve toujours au même endroit, seul un répertoire est légèrement modifié.

Exemple de chemins :

/home/toto/bob2056/readme.txt
/home/toto/bob4444/readme.txt
/home/toto/bob4567zx5402/readme.txt

(en gros pour une navigation sous unix l'on taperait : vi /home/toto/bob*/readme.txt)
(Il n'y a toujours qu'un bob* par répertoire.)

les codes déjà testés :

1 : open(D, "</home/toto/bob*/readme.txt");

2 : open(D, "</home/toto/bob\*/readme.txt");

3 : $bob =~ /bob.*/;
open(D, "</home/toto/$bob/readme.txt");

4 : $bob = bob*;
open(D, "</home/toto/$bob/readme.txt");



Bref, je commence à me poser des question sur la possibilité de la chose....

Any ideas ?
Configuration: Windows XP
Firefox 3.5.5

4 réponses

  1. lami20j
     
    Re,

    Voici une manière pour récupérer le nom de fichier avec le chemin complet. A toi d'adapter.

    #!/usr/bin/perl
    use strict;use warnings;
    my $rep="/home/lami20j/trash/";
    my @fic=glob("${rep}bob*/readme.txt");
    
    for my $fic(@fic){
      open F,"$fic" or warn "E/S $fic : $!\n";
      print "contenu $fic : ";
      while(<F>){
        print;
      }
      close $fic;
    }
    __END__
    


    Résultat
    lami20j@debian:~$ perl bob.pl
    contenu /home/lami20j/trash/bob2056/readme.txt : salut1
    contenu /home/lami20j/trash/bob4444/readme.txt : salut2
    contenu /home/lami20j/trash/bob4567zx5402/readme.txt : salut3
    
    1
  2. lami20j
     
    Salut,

    (Il n'y a toujours qu'un bob* par répertoire.)
    Ben, non.
    Dans /home/toto il y a 3 bob
    bob2056
    bob4444
    bob4567zx5402
    lami20j@debian:~$ ls -l /home/lami20j/trash/bob*
    /home/lami20j/trash/bob2056:
    total 4
    -rw-r--r-- 1 lami20j lami20j 7 déc 21 17:07 readme.txt
    
    /home/lami20j/trash/bob4444:
    total 4
    -rw-r--r-- 1 lami20j lami20j 7 déc 21 17:07 readme.txt
    
    /home/lami20j/trash/bob4567zx5402:
    total 4
    -rw-r--r-- 1 lami20j lami20j 7 déc 21 17:07 readme.txt
    lami20j@debian:~$ grep -H '.*' /home/lami20j/trash/bob*/readme.txt
    /home/lami20j/trash/bob2056/readme.txt:salut1
    /home/lami20j/trash/bob4444/readme.txt:salut2
    /home/lami20j/trash/bob4567zx5402/readme.txt:salut3


    vi bob*/readme.txt va ouvrir les 3 fichiers que tu dois éditer un par un en utilisant :next, :previous pour changer de buffer.

    lami20j@debian:~$ vi /home/lami20j/trash/bob*/readme.txt
    3 fichiers à éditer
    
    
    :ls
      1 %a   ".local/share/Trash/files/bob2056/readme.txt" ligne 1
      2      ".local/share/Trash/files/bob4444/readme.txt" ligne 0
      3      ".local/share/Trash/files/bob4567zx5402/readme.txt" ligne 0
    


    Tu veux faire quoi exactement, puisque je n'ai pas compris?
    Tu veux ouvrir un handle pour chaque fichier readme.txt de chaque répertoire bob* ?
    0
  3. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    Salut, en fait il y a un bob a chaque fois car cela se passe sur différents serveurs. Et sur chaque serveur il y a un "bob" différent.

    "my @fic=glob("${rep}bob*/readme.txt");"

    je testerai ça demain.

    Merci du coup de main.
    0
  4. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    Ca fonctionne tres bien. Merci du coup de main.
    0