9
votes

Comment puis-je produire une liste comme des valeurs séparées par des virgules dans Perl?

Disons que j'ai une liste d'éléments xxx

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.

Quel est le moyen le plus propre de le faire à Perl?


0 commentaires

5 Réponses :


21
votes
print join(',', @list), "\n";

0 commentaires

3
votes
join(',', @list);

0 commentaires

2
votes

Rejoignez la liste avec une virgule. xxx


0 commentaires

10
votes

Vous avez plusieurs options. Le plus générique est de les rejoindre avec la fonction rejoindre code> fonction: xxx pré>

l'autre moyen est de modifier variables spéciales , qui affectent l'instruction impression code>. Par exemple, l'effet de ce qui précède peut être obtenu avec P>

$" = ",";
print "@list","\n";


0 commentaires

5
votes

Pour les cas simples, rejoindre est parfait.

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.


4 commentaires

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 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 Qu'est-ce que rejoindre 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.