Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1242 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Mise en place d'un test sur le nom d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mise en place d'un test sur le nom d'un fichier

n°2041348
Renmazuo7
Posté le 10-12-2010 à 15:24:40  profilanswer
 

Bonjour,
 
je suis débutant extrême en Perl, et voici ma question.
J'ai 2 traitements Perl qui vont chacun chercher des fichiers dans le même répertoire.
Mon soucis est qu'un des traitements doit prendre tous les fichiers commençant par la chaîne de caractère "TOTO", et l'autre doit traiter tous les fichiers ne commençant pas par "TOTO".
Comment puis-je ajouter ces 2 conditions dans mes scripts ? j'imagine que c'est assez simple mais je ne suis vraiment pas à l'aise là-dedans...
 
Merci d'avance

mood
Publicité
Posté le 10-12-2010 à 15:24:40  profilanswer
 

n°2041461
gilou
Modérateur
Modzilla
Posté le 10-12-2010 à 23:18:35  profilanswer
 

:hello:  
if ($chaine =~ /^TOTO/) pour tester si une chaine commence par TOTO
if ($chaine !~ /^TOTO/) pour tester si une chaine ne commence pas par TOTO
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2041712
Renmazuo7
Posté le 13-12-2010 à 09:40:43  profilanswer
 

Merci Gilou, j'essaye ça de suite :)

n°2041722
Renmazuo7
Posté le 13-12-2010 à 10:20:29  profilanswer
 

En fait je ne vois pas trop comment implémenter ça à mon script, je pense que cela se ferai à cette ligne :
 
foreach (<$Repertoire/*.txt> )
 
Comme vous le voyez sans doute, cette ligne prend tous les .txt dans $Repertoire.
Comment y ajouter les 2 tests maintenant ?
 
J'amagine pouvoir faire ça pour tester la présence de la chaine :
 
foreach (<$Repertoire/TOTO*.txt> )
 
Mais comment tester la NON présence de TOTO ? -_-

n°2041930
gilou
Modérateur
Modzilla
Posté le 14-12-2010 à 09:53:45  profilanswer
 

<$Repertoire/*.txt> est à éviter: les opérateurs <> ne devraient pas être employés pour faire du file globbing: http://dev.perl.org/perl6/rfc/34.html
(C'est une recommandation pour le perl 6 certes, mais dont les origines viennent de pbs avec les versions antérieures, en particulier si un fichier listé n'a pas les droits suffisants en ouverture il me semble.)
Il suffit de faire un  
my @files = grep /^TOTO/, glob("$Repertoire/*.txt" ) ;
et pour l'autre cas
my @files = grep !/^TOTO/, glob("$Repertoire/*.txt" ) ;
Pour obtenir la liste des fichier voulus, et ensuite faire une boucle de lecture sur ces fichiers
foreach my $file (@files) {
  open (my $handler, "<", $file) or die $!;
  while (<$handler> ) {
  ...
  }
  close ($handler);
}
A+,


Message édité par gilou le 14-12-2010 à 09:56:33

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Mise en place d'un test sur le nom d'un fichier

 

Sujets relatifs
Urgent : Récupérer fichier .db de base SQL Anywhere 5mise en veille apres inactivité - plage horaire
uControleur PIC export fichier texteCreer fichier avec le nom d'une variable
Integrer un fichier dans une base oracleproblème de test de collisions et gestion des scores
modifier un fichier elf[ résolu ] [GtkAda] Selectionner un fichier avec Gtk_File_Selection
Modification de chaîne de caractères dans un fichier[Résolu] Javascript qui test checkbox cochée
Plus de sujets relatifs à : Mise en place d'un test sur le nom d'un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR