perl - как создать массив с n пустыми строками или нулями? - PullRequest
25 голосов
/ 16 марта 2011

Когда я манипулирую CSV-файлами в Perl, мне часто приходится инициализировать массив с некоторым количеством одинаковых элементов:

my $arr = [];
for my $i (0..$n-1) {
    push @$arr, "";
}

Есть ли способ сделать это в более компактной форме?

Отлично, я хотел бы иметь выражение для этой цели, чтобы я мог легко добавить отсутствующие столбцы:

f([@$some_tab, n_elems("", $column_number - scalar(@$some_tab))]);

Я знаю, как написать функцию, но я никогда не делаю это в 10-строчные скрипты.

1 Ответ

42 голосов
/ 16 марта 2011

Используйте множитель.

my @arr = ("") x $n;

Обновление: обратите внимание, что это дублирует элемент, что может быть нежелательно, если вы заполняете массив ссылками. В таком случае, когда каждый элемент должен быть построен, вы можете использовать map:

my @arr = map { [] } 1..$n;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...