В Perl, как я могу заполнить массив нулями?

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

Например:

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

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

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

1 ответ

Решение
my @array = ("foo", "bar", "baz");
my $total_length = 6;

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

Из perldoc:

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

В качестве саба с указанным использованием:

sub pad_with_zeroes { my $n = pop; return ( @_, (0) x ($n-@_) ) }
Другие вопросы по тегам