Accéder à un répertoire

imad_2ii -  
 imad_2ii -
Bonjour,

je débute en PERL, et je n'arrive pas à entrer dans un répertoire pour pouvoir créer des fichiers à l'interieur et biensur resortir et passer à un autre répertoire;
en résumé jongler avec différents répertoires;
Merci d'avance;
imad

10 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Tu devrais donner un peu plus de précisions.
    Voici un exemple de création d'un fichier vide en dehors de répertoire courant

    lami20j@debian-acer:~/perl$ ls -l /mnt/sda7/txt/fichier_test.txt
    ls: impossible d'accéder à /mnt/sda7/txt/fichier_test.txt: Aucun fichier ou dossier de ce type
    lami20j@debian-acer:~/perl$ cat creer_fic.pl 
    #!/usr/bin/perl
    use strict;use warnings;
    
    open "F", ">/mnt/sda7/txt/fichier_test.txt"
     or die "E/S : $!\n";
    close F;
    __END__
    
    lami20j@debian-acer:~/perl$ perl creer_fic.pl
    lami20j@debian-acer:~/perl$ ls -l /mnt/sda7/txt/fichier_test.txt
    -rw-r--r-- 1 lami20j lami20j 0  8 mai   20:11 /mnt/sda7/txt/fichier_test.txt
    lami20j@debian-acer:~/perl$ file /mnt/sda7/txt/fichier_test.txt
    /mnt/sda7/txt/fichier_test.txt: empty
    lami20j@debian-acer:~/perl$ 

    0
  2. imad_2ii
     
    Bonjour,
    Merci lami20j pour ta réponse rapide;
    en faite, j'aimerai pouvoir changer de répertoire entrer dedans, créer un fichier et écrire dedans;
    et bien sur pouvoir ressortir et changer de répertoire pour pouvoir y travailler;
    Merci !!
    0
  3. imad_2ii
     
    C bon, j'ai réussi à créer un fichier dans un autre répertoire, merci

    J'aurai une question :)

    J'AI esseyé d'utiliser les inputs, je m'explique : demander d'entrer un nom, utiliser ce nom pour un dossier et un fichier.txt;
    mais j'ai des erreurs, tel que : <gras>Global symbol "$comp_nom" requires explicit package name at /home/irahal/Bureau/perl-test/repertoire.pl line 6.
    merciii
    0
  4. imad_2ii
     
    RE;
    j'ai réglé tous ces petits problèmes;

    mais celui ci, je ne sais vraiment pas comment faire,

    le blem est assé simple : je fait un print pour ecrire dans un fichier
    j'ai cette ligne : INC = include/$comp_nom.h

    le $comp_nom est une variable (un nom)

    le .h s'affiche toujours en dessous du nom, et je ne sais pas comment faire pour le remettre au meme niveau que le nom de ma var !!!!

    merci
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      demander d'entrer un nom, utiliser ce nom pour un dossier
      Si je comprends biens $comp_nom contient ce que tu entre au clavier?

      Voici un exemple
      lami20j@debian-acer:~$ cat var.pl  
      #!/usr/bin/perl 
      use strict;use warnings; 
      print "Entrez un mot: "; 
      my $comp_nom=<STDIN>; 
      
      # ici .h s'affiche en dessous puisque lorsque je tape le mot 
      # j'appuie sur Entrer pour valider et le saute de ligne sera 
      # contenu par la variable 
      print "*" x 20,"\n"; 
      print "$comp_nom.h\n"; 
      #ici j'enlève le saute de ligne \n contenu dans la variable 
      # et l'affichage se fait sur une seul ligne 
      print "*" x 20,"\n"; 
      chomp($comp_nom);
      print "$comp_nom.h\n"; 
      __END__ 
      
      lami20j@debian-acer:~$ perl var.pl 
      Entrez un mot: aaa 
      ******************** 
      aaa 
      .h 
      ******************** 
      aaa.h
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. imad_2ii
     
    Bonjour,
    j'ai mon script perl qui marche bien sous linux, mais sous windows, il ya une erreur au niveau du mkpath,
    il me dis invalide argument;
    voici une partie du code :
    #!/usr/bin/perl -w

    use strict;
    use File::Path;

    print " Nom du Composant :\n";
    my $comp_nom = <>;
    print " Description du composant: \n";
    my $description = <>;
    print"Auteur : ";
    my $Auteur = <>;

    my $guillemet = <">;
    my $dollar = '$';
    mkpath(["$comp_nom/include","$comp_nom/obj"],1) or die ("Err. Cr. répertoire \n");
    0
  7. imad_2ii
     
    Bonjour,
    avant toutes chose, je n'ai toujours pas trouver pour quoi mon script (juste au-dessus) ne marche (il ne reconnait pas ma var $comp_nom);

    j'ai une autre question, plus intéressant:

    dans ma fenêtre de commande j'aimerai entrer le nom de mon script et juste à coté ajouter des paramètres genre (-- nom=... --descript=... --author=...) comme pour le prefix dans ./configure;
    que sa soit fait d'une manière automatique;
    Merci d'avance !!!
    0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Je n'ai pas encore testé sous Windows
    lami20j@debian-acer:~$ ls -l trash/ 
    total 0 
    lami20j@debian-acer:~$ cat var.pl  
    #!/usr/bin/perl  
    use warnings;use strict; 
    use File::Path; 
    
    print "Nom du Composant : "; 
    chomp(my $comp_nom = <>); 
    print "Description du composant : "; 
    chomp(my $description = <>); 
    print"Auteur : "; 
    chomp(my $Auteur = <>); 
    
    my $guillemet = '"'; 
    my $dollar = '$'; 
    
    mkpath(["/home/lami20j/trash/$comp_nom/include","/home/lami20j/trash/$comp_nom/obj"],1) or die ("Err. Cr. répertoire \n"); 
    lami20j@debian-acer:~$ perl var.pl 
    Nom du Composant : repertoire 
    Description du composant : aaa 
    Auteur : xxx 
    mkdir /home/lami20j/trash/repertoire 
    mkdir /home/lami20j/trash/repertoire/include 
    mkdir /home/lami20j/trash/repertoire/obj 
    lami20j@debian-acer:~$ ls -l trash/ 
    total 4 
    drwxr-xr-x 4 lami20j lami20j 4096 May 14 03:35 repertoire 
    lami20j@debian-acer:~$ ls -l trash/repertoire/ 
    total 8 
    drwxr-xr-x 2 lami20j lami20j 4096 May 14 03:35 include 
    drwxr-xr-x 2 lami20j lami20j 4096 May 14 03:35 obj 
    


    j'aimerai entrer le nom de mon script et juste à coté ajouter des paramètres genre (-- nom=... --descript=... --author=...) comme pour le prefix dans ./configure;

    Il s'agit des options longues GNU.
    Pour ça il faut utiliser le module Getopt::Long

    GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
    106485010510997108
    0
  9. imad_2ii
     
    Merci Beaucoup, c'était un problème de chomp;

    sinon j'essai un script avec une interface graphique (utilisation de Tk), il marche tres bien sous linux; mais sous windows il ne trouve pas Tk/event.pm, sachant que je l'ai bien installé;
    0
  10. imad_2ii
     
    j'ai trouver la solution pour faire entrer le nom dans ma fenetre de commande (script.pl --nom), en utilisant ARGV[], le probleme est que je ne sais pas comment ecrire nom = et lui attribuer argv[] ??
    0