À (at) Fri, 20 Aug 2004 00:11:44 +0200, saorge écrivait (wrote):
On Sun, 08 Aug 2004 14:34:19 +0200, Aurelien wrote:
Je me suis actuellement rabattu sur un opendir+readdir+m//, ca marche pas mal, mais je me demande si on peut pas faire mieux ?
use File::Find
Sans voir le script à base de 'opendir', 'readdir' et 'm//', il est difficile
d'affirmer que File::Find fera mieux !
;-)
En fait, la recherche est faite qu'un sein d'un seul répertoire, donc je ne sais pas si File::Find marchera mieux en effet .
Voici le script :
__BEGIN__
# Convertit le pattern Shell en expression régulière $filetemplate =~ s#*#.*#g;
my @files = ();
# Teste chaque fichier du répertoire if (opendir(IMGDIR, $PHOTODIR)) { @files = grep /$filetemplate/, readdir(IMGDIR); closedir(IMGDIR); }
__END__
Aurélien
Paul Gaborit
À (at) Sat, 21 Aug 2004 15:43:34 +0200, Aurelien écrivait (wrote):
En fait, la recherche est faite qu'un sein d'un seul répertoire, donc je ne sais pas si File::Find marchera mieux en effet .
Dans ce cas, non. Au contraire ;-)
Voici le script :
__BEGIN__
# Convertit le pattern Shell en expression régulière $filetemplate =~ s#*#.*#g;
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le pattern shell provient de l'extérieur, c'est loin d'être suffisant. Il faudrait mieux passer par un appel préalable à 'quotemeta'. Et même pour votre usage personnelle, pensez tout de même à 'quoter' les points (.) qui précèdent les extensions.
my @files = ();
# Teste chaque fichier du répertoire if (opendir(IMGDIR, $PHOTODIR)) { @files = grep /$filetemplate/, readdir(IMGDIR); closedir(IMGDIR); }
else { die "Can't read '$PHOTODIR' : $!n"; }
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Sat, 21 Aug 2004 15:43:34 +0200,
Aurelien <lelfeNOSPAM@lelfe.net> écrivait (wrote):
En fait, la recherche est faite qu'un sein d'un seul répertoire, donc je ne
sais pas si File::Find marchera mieux en effet .
Dans ce cas, non. Au contraire ;-)
Voici le script :
__BEGIN__
# Convertit le pattern Shell en expression régulière
$filetemplate =~ s#*#.*#g;
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le pattern
shell provient de l'extérieur, c'est loin d'être suffisant. Il faudrait mieux
passer par un appel préalable à 'quotemeta'. Et même pour votre usage
personnelle, pensez tout de même à 'quoter' les points (.) qui précèdent les
extensions.
my @files = ();
# Teste chaque fichier du répertoire
if (opendir(IMGDIR, $PHOTODIR)) {
@files = grep /$filetemplate/, readdir(IMGDIR);
closedir(IMGDIR);
}
else {
die "Can't read '$PHOTODIR' : $!n";
}
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Sat, 21 Aug 2004 15:43:34 +0200, Aurelien écrivait (wrote):
En fait, la recherche est faite qu'un sein d'un seul répertoire, donc je ne sais pas si File::Find marchera mieux en effet .
Dans ce cas, non. Au contraire ;-)
Voici le script :
__BEGIN__
# Convertit le pattern Shell en expression régulière $filetemplate =~ s#*#.*#g;
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le pattern shell provient de l'extérieur, c'est loin d'être suffisant. Il faudrait mieux passer par un appel préalable à 'quotemeta'. Et même pour votre usage personnelle, pensez tout de même à 'quoter' les points (.) qui précèdent les extensions.
my @files = ();
# Teste chaque fichier du répertoire if (opendir(IMGDIR, $PHOTODIR)) { @files = grep /$filetemplate/, readdir(IMGDIR); closedir(IMGDIR); }
else { die "Can't read '$PHOTODIR' : $!n"; }
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Aurelien
Paul Gaborit wrote:
Dans ce cas, non. Au contraire ;-)
C'est bien ce que je pensais.
Donc, rien de plus rapide ?
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le pattern
shell provient de l'extérieur, c'est loin d'être suffisant. Il faudrait mieux
passer par un appel préalable à 'quotemeta'. Et même pour votre usage personnelle, pensez tout de même à 'quoter' les points (.) qui précèdent les
extensions.
Oui, tout à fait. Le pattern est généré par le script un peu avant, donc, rien à craindre, je maitrise la génération de ceci. (Il eu fallu également changer les '?')
Aruélien
Paul Gaborit wrote:
Dans ce cas, non. Au contraire ;-)
C'est bien ce que je pensais.
Donc, rien de plus rapide ?
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le
pattern
shell provient de l'extérieur, c'est loin d'être suffisant. Il
faudrait mieux
passer par un appel préalable à 'quotemeta'. Et même pour votre usage
personnelle, pensez tout de même à 'quoter' les points (.) qui
précèdent les
extensions.
Oui, tout à fait.
Le pattern est généré par le script un peu avant, donc, rien à craindre,
je maitrise la génération de ceci.
(Il eu fallu également changer les '?')
Si c'est pour votre propre utilisation, cela peut suffire. Mais si le pattern
shell provient de l'extérieur, c'est loin d'être suffisant. Il faudrait mieux
passer par un appel préalable à 'quotemeta'. Et même pour votre usage personnelle, pensez tout de même à 'quoter' les points (.) qui précèdent les
extensions.
Oui, tout à fait. Le pattern est généré par le script un peu avant, donc, rien à craindre, je maitrise la génération de ceci. (Il eu fallu également changer les '?')
Aruélien
Paul Gaborit
À (at) Mon, 23 Aug 2004 12:47:36 +0200, Aurelien écrivait (wrote):
Paul Gaborit wrote:
Dans ce cas, non. Au contraire ;-)
C'est bien ce que je pensais.
Donc, rien de plus rapide ?
Le seul moyen de gagner un tout petit peu de temps si le répertoire contient beaucoup de fichiers serait de les traiter les uns après les autres plutôt que de construire une liste préalable des fichiers à traiter. On y gagne le temps d'allocation de la liste ou des deux listes dans le cas du filtrage. Mais ne comptez pas là-dessus pour gagner beaucoup ;-)
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Mon, 23 Aug 2004 12:47:36 +0200,
Aurelien <lelfeNOSPAM@lelfe.net> écrivait (wrote):
Paul Gaborit wrote:
Dans ce cas, non. Au contraire ;-)
C'est bien ce que je pensais.
Donc, rien de plus rapide ?
Le seul moyen de gagner un tout petit peu de temps si le répertoire contient
beaucoup de fichiers serait de les traiter les uns après les autres plutôt que
de construire une liste préalable des fichiers à traiter. On y gagne le temps
d'allocation de la liste ou des deux listes dans le cas du filtrage. Mais ne
comptez pas là-dessus pour gagner beaucoup ;-)
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Mon, 23 Aug 2004 12:47:36 +0200, Aurelien écrivait (wrote):
Paul Gaborit wrote:
Dans ce cas, non. Au contraire ;-)
C'est bien ce que je pensais.
Donc, rien de plus rapide ?
Le seul moyen de gagner un tout petit peu de temps si le répertoire contient beaucoup de fichiers serait de les traiter les uns après les autres plutôt que de construire une liste préalable des fichiers à traiter. On y gagne le temps d'allocation de la liste ou des deux listes dans le cas du filtrage. Mais ne comptez pas là-dessus pour gagner beaucoup ;-)
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>