[PERL] Présence d'un espace immaginaire
Résolu
TMart
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
TMart Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
TMart Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit souci avec mon script qui liste les dossiers d'un répertoire et les copie dans un fichier. De ce côté là tout est OK, j'ai juste un problème de mise en forme.
Effectivement au début de chaque ligne, j'aperçois l'apparition d'un espace et à la fin de mon texte une ligne blanche.
Et j'aimerai comprendre le pourquoi du comment.
Voici mon script :
use strict;use warnings;
my $repertoire;
my $chaine;
open F,'+<C:\Documents and Settings\TMart\Bureau\test.txt' or die "E/S : $!\n";
sub ListersFichiers
{
$repertoire = $ARGV[0];
my @fichiers;
# Ouverture d'un répertoire
opendir (my $FhRep,$repertoire) or die "impossible d'ouvrir le répertoire $repertoire\n";
# Liste fichiers et répertoire sauf (. et ..)
my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
# Fermeture du répertoire
closedir ($FhRep);
# On récupère tous les fichiers
foreach my $nom (@Contenu)
{
if (-d "$repertoire/$nom")
{
push(@fichiers,"$repertoire\\$nom","\n");
}
elsif (-d "$repertoire/$nom")
{
push(@fichiers,ListersFichiers("$repertoire\\$nom"));
}
}
return "@fichiers";
}
print F ListersFichiers($repertoire);
close F;
Voici le résultat dans le Txt :*
1 D:\Boulot\Fichier Maison
2 D:\Boulot\Packet
3 D:\Boulot\Projet 2003
4 D:\Boulot\Projet Cablage
5 D:\Boulot\Projet Routage
6 D:\Boulot\Prosits
7 D:\Boulot\Ressources
8 D:\Boulot\Stage IDEUS
9 D:\Boulot\Workshop
10 "une ligne blanche"
Voilà, merci d'avance, TMart.
J'ai un petit souci avec mon script qui liste les dossiers d'un répertoire et les copie dans un fichier. De ce côté là tout est OK, j'ai juste un problème de mise en forme.
Effectivement au début de chaque ligne, j'aperçois l'apparition d'un espace et à la fin de mon texte une ligne blanche.
Et j'aimerai comprendre le pourquoi du comment.
Voici mon script :
use strict;use warnings;
my $repertoire;
my $chaine;
open F,'+<C:\Documents and Settings\TMart\Bureau\test.txt' or die "E/S : $!\n";
sub ListersFichiers
{
$repertoire = $ARGV[0];
my @fichiers;
# Ouverture d'un répertoire
opendir (my $FhRep,$repertoire) or die "impossible d'ouvrir le répertoire $repertoire\n";
# Liste fichiers et répertoire sauf (. et ..)
my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
# Fermeture du répertoire
closedir ($FhRep);
# On récupère tous les fichiers
foreach my $nom (@Contenu)
{
if (-d "$repertoire/$nom")
{
push(@fichiers,"$repertoire\\$nom","\n");
}
elsif (-d "$repertoire/$nom")
{
push(@fichiers,ListersFichiers("$repertoire\\$nom"));
}
}
return "@fichiers";
}
print F ListersFichiers($repertoire);
close F;
Voici le résultat dans le Txt :*
1 D:\Boulot\Fichier Maison
2 D:\Boulot\Packet
3 D:\Boulot\Projet 2003
4 D:\Boulot\Projet Cablage
5 D:\Boulot\Projet Routage
6 D:\Boulot\Prosits
7 D:\Boulot\Ressources
8 D:\Boulot\Stage IDEUS
9 D:\Boulot\Workshop
10 "une ligne blanche"
Voilà, merci d'avance, TMart.
A voir également:
- [PERL] Présence d'un espace immaginaire
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Espace stockage google - Guide
- Presence en ligne instagram - Guide
- Liberer espace ipad - Guide
3 réponses
Re,
Explication
Explication
#!/usr/bin/perl use strict;use warnings; my @x=qw/x y z/; # si on mets le tableau entre guillemets # les éléments de tableau sont affichés # avec un espace en tant que séparateur print "@x\n"; # si on exécute print d'un tableau # sans ls guillemts # il n'y a pas de séparateur d'éléments # à l'affichage print @x; print "\n"; # dans ton cas, il s'agit des fichiers # et le parcours de dossier envoie le nom # de fichier avec le saute de ligne à la fin # ce qui donne un tableau de ce genre # avec a\n, b\n, c\n comme nom de fichiers my @c=("a\n", "b\n", "c\n"); # pas besoin de chomp dans ce cas vu que tu veux afficher # un par ligne. # En suivant l'exemple plus haut # si on mets des guillemets # alors les éléments seront affichés # avec un espace en tant que séparateur # ce qui donne # 1er élément #a suivi d'un saute de ligne # le séparateur espace # b suivi d'un saute de ligne # le séparateur espace # et ainsi de suite #a # b # c # etc. print "@c\n"; print @c; __END__Exécution
lami20j@debian:~/trash$ perl ccm9_lister_repertoires.pl x y z xyz a b c a b c