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

  FORUM HardWare.fr
  Programmation
  Perl

  inclure variable dans nom de fichiers crées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

inclure variable dans nom de fichiers crées

n°2069076
mikado100
Posté le 09-04-2011 à 19:55:12  profilanswer
 

bonsoir,
 
 je vous explique mon probleme en perl. à l'aide d'opendir et de readdir je lis les noms des fichier d'un repertoir que je stocke successivement  dans $fichier. mais impossible de me servir de $fichier pour donner un nom à un fichier créer qui est en lien avec celui ouvert.comment faire
 
#!/usr/bin/perl -w
 
 
opendir (REP,"textebase" );
while ($fichier=readdir(REP) )  
{print $fichier;open (descripteur1,">$fichier.txt" );print descripteur1 "aaa"}
closedir(REP);  
 

mood
Publicité
Posté le 09-04-2011 à 19:55:12  profilanswer
 

n°2069079
gilou
Modérateur
Modzilla
Posté le 09-04-2011 à 21:23:51  profilanswer
 

Au minimum, il manque un close sur le fichier ouvert.
#!/usr/bin/perl -w
 
 
opendir (REP,"textebase" );
while ($fichier=readdir(REP) )  
{print $fichier;open (descripteur1,">$fichier.txt" );print descripteur1 "aaa"; close descripteur1;}
closedir(REP);  

 

Tu veux faire quoi exactement? remplacer le contenu de chaque fichier du répertoire par "aaa"?
A+,


Message édité par gilou le 09-04-2011 à 21:24:11

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2069084
gilou
Modérateur
Modzilla
Posté le 09-04-2011 à 22:43:01  profilanswer
 

Bon, sinon, il faudrait peut être pas écrire du perl antédiluvien avec des variables globales:
 

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use autodie qw(open close);   # open/close succeed or die
  5.  
  6. my $dirname = "textebase";
  7. opendir my $dirhandle, $dirname;
  8. foreach my $filename (readdir($dirhandle)) {
  9.  if (-f $filename) {  # readdir retourne aussi les répertoires, ainsi que . et .. ce que tu veux sans doute pas
  10.    print $filename, "\n";  # faut au moins séparer les noms par un blanc ou une ligne sinon c'est illisible
  11.    open my $filehandle, '>', $filename;
  12.    print $filehandle "aaa";
  13.    close $filehandle;
  14.  }
  15. }
  16. closedir $dirhandle;


Bon, ça fait pas plus que ton code initial, aux vérifications près, mais c'est plus propre et lisible.
Quand tu auras clairement expliqué ce que tu veux faire, on pourra progresser.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2069087
mikado100
Posté le 10-04-2011 à 00:41:24  profilanswer
 

pardon pour le retard
je veux que le nom de mes fichiers qui étaient dans le premier répertoire me serve à coder partiellement le nom de mes fichiers que je vais creer.
je m'explique je pars par exemple dans REP j'ai un fichier zidane et un fichier platini et je veux avoir après le programme les deux fichiers zidane2011 et platini2011. le preobleme est que j'essaye de faire ça avec le programme mes nouveaux fichiers se nomment . et ..

n°2069101
gilou
Modérateur
Modzilla
Posté le 10-04-2011 à 09:58:44  profilanswer
 

C'est parce que tu ne changes pas le nom de ton fichier que tu écris.

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use autodie qw(open close);   # open/close succeed or die
  5.  
  6. my $dirname = "textebase";
  7. opendir my $dirhandle, $dirname;
  8. foreach my $filename (readdir($dirhandle)) {
  9.  if (-f $filename) {
  10.    print $filename, "\n";  
  11.    open my $filehandle, '>', $filename."aaa"; #ici, on ouvre le fichier dont le nom est celui initial plus aaa
  12.    # et ici tu fais ce que tu veux avec ce nouveau fichier créé
  13.    # si tu veux copier, il faut
  14.    # 1) ouvrir en lecture $filename
  15.    # 2) lire ligne à ligne le fichier (boucle)
  16.    # 3) écrire la ligne dans le fichier créé
  17.    # 4) fermer le fichier en lecture
  18.    close $filehandle;
  19.    # Mais tout ça se fait plus facilement avec un module, File::Copy
  20.  }
  21. }
  22. closedir $dirhandle;


 
La manière basique de faire avec File::Copy

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use autodie qw(open close);   # open/close succeed or die
  5. use File::Copy; #module pour la copie de fichier
  6.  
  7. my $dirname = "textebase";
  8. my $extension = "aaa";
  9. opendir my $dirhandle, $dirname;
  10. foreach my $filename (readdir($dirhandle)) {
  11.  if (-f $filename) {
  12.    print $filename, "\n";
  13.    copy($filename, $filename.$extension);
  14.  }
  15. }
  16. closedir $dirhandle;


 
A+,


---------------
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

  inclure variable dans nom de fichiers crées

 

Sujets relatifs
recherche fichiers xlsx et convertier en format xlsTraitement de fichiers .xml
Traitement d'une variable tableauFTP masquer certain types de fichiers
[Perl / JS] [contourné] récupérer le contenu d'une variable JSregrouper fichiers contenus dans dossiers enfants vers dossier parent
Boucle vba qui ouvre des fichiers avec noms variablesVariable PHP dans une fonction Javascript
joindre des fichiers VOB "sans copie"Alimentation d'une variable avec données d'un tableau
Plus de sujets relatifs à : inclure variable dans nom de fichiers crées


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