Perl foreach mais pas le dernier ;)
Résolu/Fermé
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
-
29 oct. 2008 à 09:47
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 oct. 2008 à 21:37
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 oct. 2008 à 21:37
A voir également:
- Perl foreach mais pas le dernier ;)
- Le dernier iphone - Guide
- Ouvrir dernier onglet fermé - Guide
- Denon perl pro test - Accueil - Audio
- Sam a acheté le dvd du dernier concert de son chanteur préféré. que peut-il faire dans le respect du droit d’auteur ? - Forum Vos droits sur internet
- Quel est le dernier mot de la 2e page pix - Forum Programmation
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 oct. 2008 à 18:37
29 oct. 2008 à 18:37
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$
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
29 oct. 2008 à 10:46
29 oct. 2008 à 10:46
à 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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 oct. 2008 à 12:54
29 oct. 2008 à 12:54
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";
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
29 oct. 2008 à 16:32
29 oct. 2008 à 16:32
ok ... aucune solutions ne fonctionnent ... je dois rater un truc là ...
Stéphane
Stéphane
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
29 oct. 2008 à 16:52
29 oct. 2008 à 16:52
[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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 oct. 2008 à 21:37
29 oct. 2008 à 21:37
Re,
Juste pour le fun ;-)
Juste pour le fun ;-)
$ echo "Champ1 Champ2 Champ3" | perl -ne 's/ +/|/g;print' Champ1|Champ2|Champ3 $ echo "Champ1 Champ2 Champ3" | perl -ne 's/\b +/|/g;print' Champ1|Champ2|Champ3 $ echo "Champ1 Champ2 Champ3" | perl -ne 's/\s+(?!$)/|/g;print' Champ1|Champ2|Champ3