在Perl中,如何用零填充数组?我知道我可以获得数组的长度,然后使用push进行for循环,但是有更可口的方式吗?
例如:
my @array = pad_with_zeroes("foo", "bar", "baz", 6);
# @array now eq ("foo", "bar", "baz", 0, 0, 0)
(例如)List::Util
或类似的通用模块中是否还有可以执行此操作的内容?
答案 0 :(得分:8)
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-@_) ) }