Скажем, у меня есть список элементов
@list=(1,2,3);
#desired output
1,2,3
и я хочу распечатать их, поскольку запятая разделила значения. Самое главное я не хочу, чтобы последний элемент имел запятую после него.
Что самый чистый путь состоит в том, чтобы сделать это в Perl?
У вас есть несколько вариантов. Самый общий - объединить их с помощью функции join
:
print join(',', @list), "\n";
Другой способ - изменить специальные переменные , которые влияют на оператор print
. Например, эффект вышеупомянутого может быть достигнут с помощью
$, = ",";
$\ = "\n";
print @list;
. Вы также можете автоматически присоединиться к списку, если он подвергается расширению в двойных кавычках:
$" = ",";
print "@list","\n";
Обратите внимание, что если вы измените специальные переменные, такие как $,
, $ \
или $ "
, вы устанавливаете их глобально. Чтобы этого избежать, используйте ключевое слово local
и заключите операнды в блок.
Для простых случаев идеально подходит соединение
.
Но если вы хотите создавать или анализировать файлы CSV, лучше использовать Text :: CSV . Он будет обрабатывать кавычки и экранирование запятых и всевозможные другие вредные проблемы для вас. Это также очень быстро.
Соедините список запятой.
@list=(1,2,3);
$output = join(",",@list);