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

时间:2013-11-20 06:55:37

标签: perl pad

在Perl中,如何用零填充数组?我知道我可以获得数组的长度,然后使用push进行for循环,但是有更可口的方式吗?

例如:

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

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

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

1 个答案:

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