在Perl中,如何用零填充数组?

Cer*_*ian 4 perl pad

在Perl中,如何用零填充数组?我知道我可以得到数组的长度,然后用推送做一个for循环,但是有更可口的方式吗?

例如:

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

# @array now eq ("foo", "bar", "baz", 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

(例如)List::Util或类似的通用模块中是否还可以执行此操作?

Сух*_*й27 8

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

push @array, (0) x ($total_length - @array);
Run Code Online (Sandbox Code Playgroud)

来自perldoc:

二进制"x"是重复运算符.在标量上下文中或如果左操作数未括在括号中,它将返回由左操作数组成的字符串,重复右操作数指定的次数.在列表上下文中,如果左操作数括在括号中或者是由qw/STRING /形成的列表,则它会重复列表.如果右操作数为零或负数,则返回空字符串或空列表,具体取决于上下文.

作为具有指定用途的子:

sub pad_with_zeroes { my $n = pop; return ( @_, (0) x ($n-@_) ) }
Run Code Online (Sandbox Code Playgroud)