liste des fichiers *.aaa et *.bbb d'un repertoire specifie
14 réponses
fun.x
Bonjour,
Je sais que ce genre de questions est assez basique, mais apres une
recherche sur les newsgroups, je n'arrive toujours pas a faire
exactement ce que je veux.
Voila, pour commencer, je desire recuperer la liste des fichiers *.aaa
et *.bbb d'un repertoire que je specifie en parametre. Evidemment, je
suis un debutant... :-)
J'ai essaye d'utiliser Glob mais ca ne marche pas des masses.
Merci pour votre aide.
Toute proposition d'optimisation est la bienvenue :-)
voila mon code:
use File::DosGlob;
use strict 'vars';
my $Argc=@ARGV;
if ($Argc != 1) {
printf ("USAGE: $0 <DIRECTORY>\n");
exit;
}
my $Dir = $ARGV[0];
#opendir(DIR, $Dir) or die("Error while openning directory $Dir\n");
Histoire d'être sûr que tu comprennes, voici le code testé :
opendir(DIR, "."); my @files=readdir(DIR); my @filesFiltered=grep(/.*.aaa$|.*.bbb$/,@files); print "res:"."@filesFiltered"."n"; close DIR;
Voilii
fun.x
OK. Merci.
j'ai teste. ca tient aussi en une ligne: opendir(DIR, $Dir); my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) ); print "res:"."@filesFiltered"."n"; close DIR;
OK. Merci.
j'ai teste. ca tient aussi en une ligne:
opendir(DIR, $Dir);
my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) );
print "res:"."@filesFiltered"."n";
close DIR;
j'ai teste. ca tient aussi en une ligne: opendir(DIR, $Dir); my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) ); print "res:"."@filesFiltered"."n"; close DIR;
Nicolas George
"fun.x" wrote in message :
j'ai teste. ca tient aussi en une ligne: opendir(DIR, $Dir); my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) ); ^
berk les noms de variables à la java.
print "res:"."@filesFiltered"."n"; close DIR;
On peut même économiser le close (qui d'ailleurs devrait être un closedir) :
my @files_filtered = do { opendir my $d, $dir or die "$dir: $!n"; grep /.(?:aaa|bbb)Z/, readdir $d; };
Je trouve cette manière de faire beaucoup plus élégante, avec la lexicalisation de l'ouverture du répertoire.
"fun.x" wrote in message
<1117445701.593845.136540@o13g2000cwo.googlegroups.com>:
j'ai teste. ca tient aussi en une ligne:
opendir(DIR, $Dir);
my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) );
^
berk les noms de variables à la java.
print "res:"."@filesFiltered"."n";
close DIR;
On peut même économiser le close (qui d'ailleurs devrait être un closedir) :
my @files_filtered = do {
opendir my $d, $dir or die "$dir: $!n";
grep /.(?:aaa|bbb)Z/, readdir $d;
};
Je trouve cette manière de faire beaucoup plus élégante, avec la
lexicalisation de l'ouverture du répertoire.
j'ai teste. ca tient aussi en une ligne: opendir(DIR, $Dir); my @filesFiltered=grep(/.*.aaa$|.*.bbb$/, readdir(DIR) ); ^
berk les noms de variables à la java.
print "res:"."@filesFiltered"."n"; close DIR;
On peut même économiser le close (qui d'ailleurs devrait être un closedir) :
my @files_filtered = do { opendir my $d, $dir or die "$dir: $!n"; grep /.(?:aaa|bbb)Z/, readdir $d; };
Je trouve cette manière de faire beaucoup plus élégante, avec la lexicalisation de l'ouverture du répertoire.
damien guerin
ça me fait rire ton "beurk, les noms de variables à la Java". Moi perso, j'ai jamais vu des noms de variables à la sauce Java. Ca ressemble à quoi pour toi, des noms de variables à la Perl? En tout cas, je ne me doutais pas qu'il y avait une différence... ;)
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je trouve seulement que ça rend beaucoup moins lisible. ça a le mérite au moins de croire qu'on est un killer...!
Enfin, ce n'est que mon avis...
ça me fait rire ton "beurk, les noms de variables à la Java". Moi
perso, j'ai jamais vu des noms de variables à la sauce Java. Ca
ressemble à quoi pour toi, des noms de variables à la Perl? En tout
cas, je ne me doutais pas qu'il y avait une différence... ;)
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je
trouve seulement que ça rend beaucoup moins lisible.
ça a le mérite au moins de croire qu'on est un killer...!
ça me fait rire ton "beurk, les noms de variables à la Java". Moi perso, j'ai jamais vu des noms de variables à la sauce Java. Ca ressemble à quoi pour toi, des noms de variables à la Perl? En tout cas, je ne me doutais pas qu'il y avait une différence... ;)
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je trouve seulement que ça rend beaucoup moins lisible. ça a le mérite au moins de croire qu'on est un killer...!
Enfin, ce n'est que mon avis...
Paul Gaborit
À (at) 30 May 2005 04:57:17 -0700, "damien guerin" écrivait (wrote):
ça me fait rire ton "beurk, les noms de variables à la Java". Moi perso, j'ai jamais vu des noms de variables à la sauce Java. Ca ressemble à quoi pour toi, des noms de variables à la Perl? En tout cas, je ne me doutais pas qu'il y avait une différence... ;)
C'est une histoire de style. Chacun peut choisir celui qu'il veut mais doit respecter le style général imposé par le langage et doit respecter le style qu'il a choisi.
Perl propose (impose) quelques règles : les constantes en majuscules (COMME_CA), les noms de classes (ou de modules) capitalisé (CommeCa), les pragmas réservés au langage en minuscule (comme::ca), les handles en majuscules (DIR, FH), les noms de méthodes en minuscules (comme_ca), etc.
Après, chacun son style...
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je trouve seulement que ça rend beaucoup moins lisible. ça a le mérite au moins de croire qu'on est un killer...!
On peut faire sans le 'do'. Ce qui est intéressant, c'est l'usage d'un scalaire ($d) qui est lexicalement local plutôt que d'un HANDLE (DIR) qui est, par nature, global :
my @files_filtered; { opendir my $d, $dir or die "$dir: $!n"; @files_filtered = grep /.(?:aaa|bbb)Z/, readdir $d; closedir $d; # pas indispensable... }
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 30 May 2005 04:57:17 -0700,
"damien guerin" <damien.guerin2@wanadoo.fr> écrivait (wrote):
ça me fait rire ton "beurk, les noms de variables à la Java". Moi
perso, j'ai jamais vu des noms de variables à la sauce Java. Ca
ressemble à quoi pour toi, des noms de variables à la Perl? En tout
cas, je ne me doutais pas qu'il y avait une différence... ;)
C'est une histoire de style. Chacun peut choisir celui qu'il veut mais doit
respecter le style général imposé par le langage et doit respecter le style
qu'il a choisi.
Perl propose (impose) quelques règles : les constantes en majuscules
(COMME_CA), les noms de classes (ou de modules) capitalisé (CommeCa), les
pragmas réservés au langage en minuscule (comme::ca), les handles en
majuscules (DIR, FH), les noms de méthodes en minuscules (comme_ca), etc.
Après, chacun son style...
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je
trouve seulement que ça rend beaucoup moins lisible.
ça a le mérite au moins de croire qu'on est un killer...!
On peut faire sans le 'do'. Ce qui est intéressant, c'est l'usage d'un
scalaire ($d) qui est lexicalement local plutôt que d'un HANDLE (DIR) qui est,
par nature, global :
my @files_filtered;
{
opendir my $d, $dir or die "$dir: $!n";
@files_filtered = grep /.(?:aaa|bbb)Z/, readdir $d;
closedir $d; # pas indispensable...
}
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 30 May 2005 04:57:17 -0700, "damien guerin" écrivait (wrote):
ça me fait rire ton "beurk, les noms de variables à la Java". Moi perso, j'ai jamais vu des noms de variables à la sauce Java. Ca ressemble à quoi pour toi, des noms de variables à la Perl? En tout cas, je ne me doutais pas qu'il y avait une différence... ;)
C'est une histoire de style. Chacun peut choisir celui qu'il veut mais doit respecter le style général imposé par le langage et doit respecter le style qu'il a choisi.
Perl propose (impose) quelques règles : les constantes en majuscules (COMME_CA), les noms de classes (ou de modules) capitalisé (CommeCa), les pragmas réservés au langage en minuscule (comme::ca), les handles en majuscules (DIR, FH), les noms de méthodes en minuscules (comme_ca), etc.
Après, chacun son style...
Sinon, je ne vois pas ce que ça apporte d'utiliser do... Moi, je trouve seulement que ça rend beaucoup moins lisible. ça a le mérite au moins de croire qu'on est un killer...!
On peut faire sans le 'do'. Ce qui est intéressant, c'est l'usage d'un scalaire ($d) qui est lexicalement local plutôt que d'un HANDLE (DIR) qui est, par nature, global :
my @files_filtered; { opendir my $d, $dir or die "$dir: $!n"; @files_filtered = grep /.(?:aaa|bbb)Z/, readdir $d; closedir $d; # pas indispensable... }
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
damien guerin
ok... merci pour cette précision...! Je suis ok, avec cette utilisation de scalaire. ;)
Bonne journée...
ok... merci pour cette précision...!
Je suis ok, avec cette utilisation de scalaire. ;)
ok... merci pour cette précision...! Je suis ok, avec cette utilisation de scalaire. ;)
Bonne journée...
fun.x
Hello,
une demande de precision supplementaire: si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ? (Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre !f1.aaa ?
Merci Marc
Hello,
une demande de precision supplementaire:
si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier
f1.aaa ?
(Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre
!f1.aaa ?
une demande de precision supplementaire: si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ? (Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre !f1.aaa ?
Merci Marc
Jogo
Le 31 mai 2005, fun.x a écrit dans fr.comp.lang.perl :
si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ?
Je ne crois pas que cela soit possible avec des regexps (ou alors des trucs pas simples). Il vaut peut-être mieux boucler (pas testé) :
my @files_filtered; { opendir my $d, $dir or die "$dir: $!n"; while (readdir $d) { push @files_filtered, $_ if (/.(?:aaa|bbb)Z/) && ($_ ne "f1.aaa")) ; } ; closedir $d; # pas indispensable... }
Le 31 mai 2005, fun.x a écrit dans fr.comp.lang.perl :
si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier
f1.aaa ?
Je ne crois pas que cela soit possible avec des regexps (ou alors des trucs
pas simples). Il vaut peut-être mieux boucler (pas testé) :
my @files_filtered;
{
opendir my $d, $dir or die "$dir: $!n";
while (readdir $d)
{ push @files_filtered, $_ if
(/.(?:aaa|bbb)Z/) && ($_ ne "f1.aaa")) ;
} ;
closedir $d; # pas indispensable...
}
Le 31 mai 2005, fun.x a écrit dans fr.comp.lang.perl :
si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ?
Je ne crois pas que cela soit possible avec des regexps (ou alors des trucs pas simples). Il vaut peut-être mieux boucler (pas testé) :
my @files_filtered; { opendir my $d, $dir or die "$dir: $!n"; while (readdir $d) { push @files_filtered, $_ if (/.(?:aaa|bbb)Z/) && ($_ ne "f1.aaa")) ; } ; closedir $d; # pas indispensable... }
JacK
Le 31/05/2005 08:31, :
Hello,
une demande de precision supplementaire: si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ? (Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre !f1.aaa ?
Merci Marc
Rajouter:
Rajouter: (?<!f1.aaa) et lire la doc pour faire mieux.
JacK
Le 31/05/2005 08:31, :
Hello,
une demande de precision supplementaire:
si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier
f1.aaa ?
(Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre
!f1.aaa ?
Merci
Marc
Rajouter:
Rajouter:
(?<!f1.aaa)
et lire la doc pour faire mieux.
une demande de precision supplementaire: si je veux la liste de tous les fichiers *.aaa et *.bbb sauf le fichier f1.aaa ? (Je ne veux pas que le fichier f1.aaa apparaissent dans ma liste)
Comment completer la regexp en entree de grep ? avec un tag du genre !f1.aaa ?
Merci Marc
Rajouter:
Rajouter: (?<!f1.aaa) et lire la doc pour faire mieux.