Как вывести список в виде значений через запятую в Perl? - PullRequest
8 голосов
/ 21 мая 2010

Допустим, у меня есть список элементов

@list=(1,2,3);
#desired output
1,2,3

и я хочу напечатать их как разделенные запятыми значения. Самое главное, я не хочу, чтобы последний элемент имел запятую после него.

Какой самый чистый способ сделать это в Perl?

Ответы [ 5 ]

14 голосов
/ 21 мая 2010
print join(',', @list), "\n";
10 голосов
/ 21 мая 2010

У вас есть несколько вариантов. Самое общее - присоединить их к функции join:

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

Другой способ - изменить специальные переменные , которые влияют на оператор print. Например, эффект вышеупомянутого может быть достигнут с

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

Вы также можете автоматически присоединиться к списку, если он подвергается расширению в двойных кавычках:

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

Обратите внимание: если вы изменяете специальные переменные, такие как $,, $\ или $", вы устанавливаете их глобально. Чтобы избежать этого, используйте ключевое слово local и заключите операнды в блок.

5 голосов
/ 21 мая 2010

Для простых случаев join идеально.

Но если вы хотите создавать или анализировать файлы CSV, лучше использовать Text :: CSV . Он будет обрабатывать кавычки и экранирование запятыми и всякие другие вредные для вас проблемы. Это также очень быстро.

2 голосов
/ 21 мая 2010

Присоединяйтесь к списку через запятую.

@list=(1,2,3);
$output = join(",",@list);
2 голосов
/ 21 мая 2010
join(',', @list);
...