Disons que j'ai une liste d'éléments et je souhaite les imprimer sous forme de valeurs séparées par des virgules. Plus important encore, je ne veux pas que le dernier élément ait une virgule après cela. P> Quel est le moyen le plus propre de le faire à Perl? P> P>
5 Réponses :
print join(',', @list), "\n";
join(',', @list);
Rejoignez la liste avec une virgule.
Vous avez plusieurs options. Le plus générique est de les rejoindre avec la fonction l'autre moyen est de modifier variables spéciales , qui affectent l'instruction rejoindre code> fonction:
impression code>. Par exemple, l'effet de ce qui précède peut être obtenu avec P>
$" = ",";
print "@list","\n";
Pour les cas simples, Mais si vous souhaitez produire ou analyser des fichiers CSV, vous ferez mieux d'utiliser Texte: : CSV . Il gérera la citation et l'échappement des virgules et toutes sortes d'autres problèmes nocifs pour vous. C'est aussi très rapide. P> rejoindre code> est parfait. p>
Encore une fois, menant à la mauvaise réponse! :) Il n'y a pas de cas simples. Il n'y a que de simples données de test qui ne montrent pas tous les cas du monde réel.
Oui, @brian, il y a des cas simples. Par exemple, vous pouvez facilement faire face à une spécification ou à une norme indiquant "Les valeurs de données ne peuvent pas contenir de virgules". Est rejoindre code> le bon moyen de créer des fichiers CSV dans le cas général? Non, absolument pas. Mais l'OP a demandé comment imprimer une liste de valeurs avec une virgule après chacune de chacune sauf la dernière - rien sur le résultat ne faisant de machine-servable ou d'échapper / cite d'autres exigences, à l'exception de la mise en place des virgules entre les valeurs adjacentes - et c'est Exactement i> Qu'est-ce que
rejoindre code> fait.
Dans mon expérience, même des spécifications qui disent que cela finit par changer, et si vous recommandez de recommander des raccourcis, vous devez mettre l'accent sur les pièges. Sinon, les gens prennent le raccourci et se sont blessés plus tard.
Utilisation de texte :: CSV à chaque fois que vous souhaitez imprimer quelques valeurs séparées par des virgules, c'est sérieusement sur-ingénierie. D'autre part, si vous générez des fichiers CSV, c'est certainement la bonne façon d'y aller. Je me tiens à ce que j'ai déjà dit. Oui, change de spécifications, changements de programmes, sh * t-hipens. Sous-ingénierie Une solution a un coût, mais la sur-ingénierie de la fois. Il appartient au praticien de déterminer quelle approche a du sens.