Преобразовать массив в строку с символами новой строки, вставленными в строку - PullRequest
1 голос
/ 19 сентября 2019

Мне нужно преобразовать массив perl в одну строковую переменную, содержащую все элементы массива, разделенные символами новой строки.

my $content = "";
@names=('A','C','C','D','E');
$content = $content . join($", @names) . "\n";
print $content;

Я предполагаю, что вывод будет выглядеть так:

A
C
C
D
E

Но я получаю:

A C C D E

Почему символ новой строки \n не выполняется?

Ответы [ 3 ]

5 голосов
/ 19 сентября 2019

Поскольку кажется, что вы хотите новую строку не только между каждой строкой, но и после последней, вы можете использовать любой из следующих параметров:

join("\n", @names) . "\n"

или

join("", map "$_\n", @names)

Они эквивалентны за исключением случаев, когда массив пуст.В этой ситуации первое приводит к новой строке, а второе - к пустой строке.


Кстати,

 $content = $content . EXPR;

можно записать как

 $content .= EXPR;
1 голос
/ 19 сентября 2019

Сделайте это вместо:

$content = $content . join("\n", @names);
1 голос
/ 19 сентября 2019

Чтобы объединить массив с символами новой строки между ними, используйте

join("\n", @array)

Ваш код использует содержимое переменной $" в качестве разделителя, который по умолчанию содержит пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...