答案 0 :(得分:14)
splice()功能。
答案 1 :(得分:8)
你可以使用这样的数组切片:
#!/bin/perl -l
my @array = (1,2,3,4,5,6,7,8,9);
print join ",", @array[0..2];
print join ",", @array[3..5];
print join ",", @array[6..$#array];
答案 2 :(得分:3)
要匹配PHP函数,您可以使用多种方法:
use strict;
use warnings;
use List::MoreUtils qw( natatime part );
use Data::Dumper;
my @array = 0..9;
my $size = 3;
{ my $i = 0;
my @part = part { int( $i++ / $size ) } @array;
warn "PART\n";
warn Dumper \@part;
}
{ my $iter = natatime( $size, @array );
my @natatime;
while( my @chunk = $iter->() ) {
push @natatime, \@chunk;
}
warn "NATATIME\n";
warn Dumper \@natatime;
}
{ my @manual;
my $i = 0;
for( 0..$#array ) {
my $row = int( $_ / $size );
$manual[$row] = []
unless exists $manual[$row];
push @{$manual[$row]}, $array[$_];
}
warn "MANUAL:\n";
warn Dumper \@manual;
}
答案 3 :(得分:2)
其中一种更简单的方法是使用List::MoreUtils
以及natatime
或part
功能。
使用natatime,它会创建一个迭代器,所以这可能不是你想要的:
my $iter = natatime 3, @orig_list;
每次调用$iter->()
都会返回列表中的3个项目。
然后是part
。
my $i = 0;
my @groups = part { int( $i++ / 3 ) } @orig_array;
如果您想让这更容易,您可以编写自己的函数:chunk_array
。
sub chunk_array {
my $size = shift;
my $i = 0;
return part { int( $i++ / $size ) } @_;
}
你会称之为:
my @trios = chunk_array( 3, @orig_array );