OVH Cloud OVH Cloud

Ouverture de fichiers...

6 réponses
Avatar
Coucou
Bonjour,

Est-il-possible en Perl d'ouvrir des fichiers avec des jokers à la manière des fichiers batch du DOS...

J'ai essayé ceci pour ouvrir un fichier dont le nom débute par aaa
Cela ne va pas ....

open (list,"<aaa*.txt");
@list=<list>;
close(list);}

Merci de votre aide...

6 réponses

Avatar
Jérémy JUST
On Wed, 26 Jan 2005 20:06:00 +0100
"Coucou" wrote:

Est-il-possible en Perl d'ouvrir des fichiers avec des jokers à la
manière des fichiers batch du DOS...


Pas à ma connaissance, mais je ne connais pas tout de la magie de
« open() ». Par contre, il est très facile de réaliser l'expansion des
jokers avec « glob() » avant d'ouvrir.


open (list,"<aaa*.txt");
@list=<list>;
close(list);}


my @list ;
FILE:foreach my $file (glob 'aaa*.txt')
{if (not open (LIST, "< $file"))
{warn "Cannot open $file: $!n" ;
next FILE ;
}

push @list, <LIST> ;
close LIST ;
}


(non testé)

--
Jérémy JUST

Avatar
dominix
"Coucou" a écrit dans le message de
news:41f7ea43$0$14670$
Bonjour,

Est-il-possible en Perl d'ouvrir des fichiers avec des jokers à la manière
des fichiers batch du DOS...


J'ai essayé ceci pour ouvrir un fichier dont le nom débute par aaa
Cela ne va pas ....

open (list,"<aaa*.txt");
@list=<list>;
close(list);}

Merci de votre aide...





perldoc -f glob
perldoc File::Glob

-- dominix

Avatar
dcd
Voici une façon de faire du glob sur des noms de fichiers en dos sur
la ligne de commande

perl traite_fich.pl *.h

Et le script traite_fich.pl :

#!/usr/bin/perl
use strict ;
use warnings ;

traite_fich($_) for (map {glob} @ARGV);
sub traite_fich { prends un nom de fichier en argument }


Dav'
Avatar
Jérémy JUST
On 1 Feb 2005 08:44:23 -0800
wrote:

Voici une façon de faire du glob sur des noms de fichiers en dos sur
la ligne de commande

perl traite_fich.pl *.h


Sauf que ce n'est pas Perl mais le shell qui fait l'expansion, dans
ce cas.


traite_fich($_) for (map {glob} @ARGV);
^^^^

Inutile, puisque @ARGV contient déjà
la liste de tous les .h

Démonstration:

<<<<<
$ cd /usr/X11R6/include/X11
$ perl -e 'print join " ", @ARGV' *.h
ap_keysym.h Composite.h CompositeP.h ConstrainP.h Constraint.h...







--
Jérémy JUST





Avatar
Jérémy JUST
On Tue, 1 Feb 2005 23:57:59 +0100
Jérémy JUST wrote:

Voici une façon de faire du glob sur des noms de fichiers en dos sur
la ligne de commande
perl traite_fich.pl *.h


Sauf que ce n'est pas Perl mais le shell qui fait l'expansion


Ce que je raconte est vrai sous la plupart des shells, mais pas sous
celui de DOS, me semble-t-il. Mais le lecteur aura rectifié de
lui-même. :)


--
Jérémy JUST


Avatar
Apokrif
Jérémy JUST :

Voici une façon de faire du glob sur des noms de fichiers en dos
sur la ligne de commande
perl traite_fich.pl *.h


Sauf que ce n'est pas Perl mais le shell qui fait l'expansion


Ce que je raconte est vrai sous la plupart des shells, mais pas
sous celui de DOS, me semble-t-il.


J'ai l'impression en effet que chaque programme tournant sous DOS
interprète les métacaractères comme bon lui semble, ou même les
rejette si leur tête ne lui revient pas ("type *.*" ne donne rien,
crois-je me souvenir).

fu2 chez les programmeurs QBasic

--
`cat ~/.signature`