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

A voir également:

10 réponses

lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
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
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
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imad_2ii
 
Merci !!!
0
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
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
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
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