j'ai une boucle for qui me produit un champ vide a la fin de mon tableau comment pourrai je empeche cela?
for my $i(map {clean($_)} @$row) {
#chomp $i;
my $d = "<tr><td>$i</td></tr>\n";
print $per_line_fh $d if ($i);
}
print $per_line_fh "</table>\n</body>\n</html>";
close $per_line_fh;
}
sub clean {
my $string = shift;
$string =~ /\s*,\s*/;
$string =~ /\s*,\s*/;
return $string;
sortie on remarque qu'il ya le dernier champ est vide a la fin en principe il ne devrait pas existe comment empeche mon code de me le renvoyer. merci bien de votre aide.
<tr><td> 0</td></tr>
<tr><td> 50</td></tr>
<tr><td> 1</td></tr>
<tr><td> </td></tr>
</table>
</body>
# Au choix
Posté par littlebreizhman . Évalué à 2.
Tester si $i est vide dans ton if conditionnant le print
ou mieux
Modifier ta fonction clean en corrigeant tes lignes de regex pour effectuer un réelle substitution pour nettoyer la valeur contenue dans $string (si c'est bien ça que tu veux faire) au lieu de tes tests redondants.
[^] # Re: Au choix
Posté par Henri . Évalué à -5.
$i n'est pas vide, il contient des valeurs, en principe j'ai deja eu a modifier mon regex au niveau du clean, car l'autre que j'avais mensionne ignorait les zeros maintenant il considere les zeros
[^] # Re: Au choix
Posté par littlebreizhman . Évalué à 2. Dernière modification le 22 août 2015 à 18:01.
Certes, $i contient a minima un espace si on en croit ta sortie -> mais c'est toi qui l'appelle champ vide dans ton post initial.
Comme je l'ai écrit précédemment, ta fonction clean telle qu'écrite dans ton post ne fait pas ce que tu dis.
Corrige en mettant en place une substitution
$string=~ s/\s*,\s*//g
???
[^] # Re: Au choix
Posté par Henri . Évalué à -5.
meme avec ce regex
le champ vide est toujours la
[^] # Re: Au choix
Posté par littlebreizhman . Évalué à 2.
Certaines valeurs de $row (probablement les fins de lignes de tes données d'entrées si je comprends bien ce que tu fais) ne répondent donc pas cette regex (au moins une virgule) et ne sont donc pas traités.
Revoie ta regex pour traiter ce cas.
# Aucun rapport...
Posté par lom (site web personnel) . Évalué à 1.
… mais je suis traumatisé par le if dans ta boucle.
Tu crées un chaîne de caractères, avec laquelle dans certains cas tu ne vas rien faire, c'est du gâchis.
Le if serait beaucoup mieux avant si tu veux garder la variable $d:
voire sans $d et avec le même type de syntaxe:
[^] # Re: Aucun rapport...
Posté par Henri . Évalué à -5.
j'accepte toutes les propositions merci bien
pour mon proble j'ai finalement rouve la reponse
[^] # Re: Aucun rapport...
Posté par Henri . Évalué à -5.
pourquoi ne prend-t-il pas les valeur 0 en consideration, je suis bloque qu'un peut il me dire ce qu'il ya lieu de changer dans mon regex.
[^] # Re: Aucun rapport...
Posté par lom (site web personnel) . Évalué à 1.
Tu peux tout faire en une seule regex avec un or (|):
ou encore
Qui veut dire que tu remplace ta chaîne par ce qui est entre parenthèses, ce qui en l’occurrence est tout sauf les blancs en début et fin de chaîne.
[^] # Re: Aucun rapport...
Posté par Henri . Évalué à -5.
malheureusement ca ne marche pas
[^] # Re: Aucun rapport...
Posté par Henri . Évalué à -6.
ceci est un peut correct mais il se me revoit un vide a la fin comment pourrai je empecher ce vide
[^] # Re: Aucun rapport...
Posté par Henri . Évalué à -5.
je l'ai finalement trouve la solution est la suivante
[^] # Re: Aucun rapport...
Posté par Nicolas Casanova . Évalué à 1.
La doc. indique toutefois que c'est plus lent de recourir au OR que de le faire en deux opérations. Pas forcément très grave, mais il vaut mieux le savoir.
[^] # Re: Aucun rapport...
Posté par NeoX . Évalué à 2.
ou comment reinventer les fonctionnalités de TRIM deja disponible dans PERL
http://perlmaven.com/trim
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.