Значения Perl Array отображаются в другой строке без использования цикла - PullRequest
1 голос
/ 12 января 2011

Может кто-нибудь сказать мне, как я могу печатать значения массива в разных строках без использования цикла?

#!/usr/bin/perl -w

my @a = ('Test1','Test2','Test3');
print "@a";# output like **Test1 Test2 Test3** but i want **Test2 in next line and Test3 next to next line**

Возможно ли это?

Ответы [ 4 ]

8 голосов
/ 12 января 2011

Вы можете просто сделать:

print join("\n", @ar);
4 голосов
/ 12 января 2011

Вы можете установить переменную $ "

 $" = "\n";

Наверное, лучше сделать

{
     local $" = "\n";
     print "@ar";
}

РЕДАКТИРОВАТЬ:

согласно верблюжьей книге :

$ "(или альтернативный $ LIST_SEPERATOR) указывает строку, которую нужно поместить между отдельными элементами, когда массив интерполируется в строку в двойных кавычках, это для случая, который вы хотите сказать:

print "@ar";

$, (или альтернативный $ OUTPUT_FIELD_SEPERATOR) указывает строку, которую нужно поместить между отдельными элементами, когда вы хотите напечатать список. Это изначально пусто. Вы можете установить $ для случая, когда вы хотите сказать:

 print @ar;
1 голос
/ 12 января 2011

использовать функцию карты

print @array = map {"$ _ \ n"} @a;

1 голос
/ 12 января 2011

Вы можете установить специальную переменную $, так, чтобы вы разделяли элементы списка. Это должно делать то, что вы хотите:

$, = "\n";
my @a = ('Test1','Test2','Test3');
print @a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...