[perl]répertoire aléatoire

Résolu/Fermé
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 21 déc. 2009 à 16:21
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 22 déc. 2009 à 09:14
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 ?

4 réponses

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
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
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
21 déc. 2009 à 22:19
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
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
22 déc. 2009 à 09:14
Ca fonctionne tres bien. Merci du coup de main.
0