在 Perl 中,如何用零填充数组?我知道我可以得到数组的长度,然后用push做一个for循环,但是有没有更可口的方法呢?
例如:
my @array = pad_with_zeroes("foo", "bar", "baz", 6);
# @array now eq ("foo", "bar", "baz", 0, 0, 0)
(例如)List::Util
或类似的通用模块中是否有任何东西可以做到这一点?
my @array = ("foo", "bar", "baz");
my $total_length = 6;
push @array, (0) x ($total_length - @array);
从perldoc:
二进制“x”是重复运算符。在标量上下文中,或者如果左操作数没有括在括号中,则它返回一个字符串,该字符串由左操作数重复右操作数指定的次数组成。在列表上下文中,如果左操作数用括号括起来或者是由 qw/STRING/ 形成的列表,则重复该列表。如果右操作数为零或负数,则根据上下文返回空字符串或空列表。
作为具有指定用法的子:
sub pad_with_zeroes { my $n = pop; return ( @_, (0) x ($n-@_) ) }