Perl foreach mais pas le dernier ;)
Résolu
sbouli
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
Je voudrais écrire :
Champ1|Champ2|Champ3\r\n
et pas :
Champ1|Champ2|Champ3|\r\n
Comment éviter le | à la fin de la ligne après le dernier champ ....
Stéphane
Je voudrais écrire :
Champ1|Champ2|Champ3\r\n
et pas :
Champ1|Champ2|Champ3|\r\n
foreach (@$valeur) { print FICHIER "$_|"; } print FICHIER "\r\n";
Comment éviter le | à la fin de la ligne après le dernier champ ....
Stéphane
A voir également:
- Perl foreach mais pas le dernier ;)
- Le dernier iphone - Guide
- Ouvrir le dernier onglet fermé - Guide
- Télécharger le dernier maître de l'air film complet en français ✓ - Forum Cinéma / Télé
- Oukitel dernier modèle - Guide
- Dernier message reçu aujourd'hui - Forum Mobile
5 réponses
Salut,
Voici le résultat (maintenant c'est testé ;-)
J'ai corrigé les erreurs
Voici le résultat (maintenant c'est testé ;-)
J'ai corrigé les erreurs
lami20j@debian:~/trash$ cat ccm4.pl #!/usr/bin/perl while(my $e=<DATA>){ my @tableau=split /\s/,$e; print map { "$_|" } @tableau[0..$#tableau-1];print "$tableau[-1]\r\n"; } __END__ Champ1 Champ2 Champ3 lami20j@debian:~/trash$ perl ccm4.pl Champ1|Champ2|Champ3 lami20j@debian:~/trash$ lami20j@debian:~/trash$ lami20j@debian:~/trash$ cat ccm5.pl #!/usr/bin/perl while(my $e=<DATA>){ my @tableau=split /\s/,$e; print "$_|" foreach (@tableau[0..$#tableau-1]);print "$tableau[-1]\r\n"; } __END__ Champ1 Champ2 Champ3 lami20j@debian:~/trash$ perl ccm5.pl Champ1|Champ2|Champ3 lami20j@debian:~/trash$ lami20j@debian:~/trash$ lami20j@debian:~/trash$ cat ccm6.pl #!/usr/bin/perl while(my $e=<DATA>){ my @tableau=split /\s/,$e; my $v=pop @tableau;print "$_|" foreach(@tableau);print "$v\r\n";push @tableau,$v; } __END__ Champ1 Champ2 Champ3 lami20j@debian:~/trash$ perl ccm6.pl Champ1|Champ2|Champ3 lami20j@debian:~/trash$ lami20j@debian:~/trash$ lami20j@debian:~/trash$ cat ccm7.pl #!/usr/bin/perl while(my $e=<DATA>){ my @tableau=split /\s/,$e; print join("|",@tableau[0..$#tableau-1],"$tableau[-1]");print "\r\n"; } __END__ Champ1 Champ2 Champ3 lami20j@debian:~/trash$ perl ccm7.pl Champ1|Champ2|Champ3 lami20j@debian:~/trash$
à par un if, je ne voi pas.
ou un truc dans le genre, mais je ne suis pas un expert en perl,
Une autre solution possible, serait d'utiliser backspace :
bonne chance
foreach (@$valeur) { if($_!=$valeur[$#valeur]){print FICHIER "$_|";} else{print FICHIER "$_";} } print FICHIER "\r\n";
ou un truc dans le genre, mais je ne suis pas un expert en perl,
Une autre solution possible, serait d'utiliser backspace :
foreach (@$valeur) { print FICHIER "$_|"; } print FICHIER "\b\r\n";
bonne chance
Salut,
Voici 4 possibilités. Je n'ai pas testé ;-)
Voici 4 possibilités. Je n'ai pas testé ;-)
print map { "$_|" } @tableau[0..$#tableau-1] , "$tableau[-1]\r\n"; print "$_|"; foreach (@tableau[0..$#tableau]) and print "$tableau[-1]\r\n"; $v=pop @tableau;print "$_|" foreach(@tableau);print "$v\r\n";push @tableau,$v; print join("|",@tableau[0..$#tableau-1],"$tableau[-1]");print "\r\n";
[EDIT : le $#valeur renvoi -1 et pas la taille du tableau !!]
Au cas où ce serait lié, voici le code un peu plus complet ... :
avec %internautes dont le value est remplis par le tableau temp_internaute :
@$temp_internaute=($addr,$raisons{$raison},1,&datetime, "$revMsgDateStr $msgHr:$msgMin:00", 'null');
$internautes{$clef}=$temp_internaute;
Stéphane
Au cas où ce serait lié, voici le code un peu plus complet ... :
open(FICHIER,">>$fichier_path") or die ("Erreur lors de l'ecriture de $fichier_path") ; while(my ($clef, $valeur) = each %internautes) { foreach (@$valeur) { print FICHIER "$_|"; } print FICHIER "\r\n"; } close(FICHIER);
avec %internautes dont le value est remplis par le tableau temp_internaute :
@$temp_internaute=($addr,$raisons{$raison},1,&datetime, "$revMsgDateStr $msgHr:$msgMin:00", 'null');
$internautes{$clef}=$temp_internaute;
Stéphane
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question