В 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-@_) ) }