2013-11-20 3 views
4

В Perl, как я могу поместить массив с нулями? Я знаю, что я могу получить длину массива, а затем сделать цикл for с нажатием, но есть ли более приемлемый способ?В Perl, как я могу поместить массив с нулями?

Например:

my @array = pad_with_zeroes("foo", "bar", "baz", 6); 

# @array now eq ("foo", "bar", "baz", 0, 0, 0) 

Есть ли в (например) List::Util или аналогичный общий модуль, который может сделать это, а?

ответ

8
my @array = ("foo", "bar", "baz"); 
my $total_length = 6; 

push @array, (0) x ($total_length - @array); 

От perldoc:

Binary "х" оператор повторения. В скалярном контексте или если левый операнд не заключен в круглые скобки, он возвращает строку, состоящую из левого операнда, повторяющую количество раз, заданное правильным операндом. В контексте списка, если левый операнд заключен в круглые скобки или представляет собой список, образованный qw/STRING /, он повторяет список. Если правый операнд равен нулю или отрицателен, он возвращает пустую строку или пустой список в зависимости от контекста.

В подразделах с указанным использованием:

sub pad_with_zeroes { my $n = pop; return (@_, (0) x ([email protected]_)) } 
+0

Wow! Спасибо, это здорово! – Cerian

+0

Вам не нужны скобки вокруг вычитания? Я использую Perl 5.18.0. –

+0

@JonathanLeffler да, они должны быть там :) –

Смежные вопросы