4

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

例如:

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

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

(例如)List::Util或类似的通用模块中是否有任何东西可以做到这一点?

4

1 回答 1

9
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-@_) ) }
于 2013-11-20T06:58:25.090 回答