我不知道问题是否清楚,无论如何,我正在使用Net::Google::Spreadsheet
从我的google驱动器电子表格中读取一些数据,然后我将获取数组中的所有行,如下所示{{1}但是,我想......让我们说在其他数组之间划分my @rows = $worksheet->rows
,例如@rows
有200个元素,我想把前50个给@rows
,接下来50个到@array1
等等而不使用计数器(@array2
)。或者说,我只想获得70到110之间的元素。
答案 0 :(得分:6)
您可以使用以下内容:
my @array1 = @rows[0 .. 49];
my @array2 = @rows[50 .. 99];
这称为数据切片。有关详细信息,请参阅此documentation。
答案 1 :(得分:5)
普通数组切片答案很棒。我只想提高另一个(类/样式)解决方案的可见性,特别是Data::Page。
之前已经说过,这段代码对于CPAN来说“太简单了”,但我必须不同意。
看起来有点矫枉过正,但它使得这些东西变得干净,可预测且可重复。当代码开始超越一次性阶段时,它可以提供很多帮助。
use strictures;
use Data::Page;
my @stuff = ( "a" .. "z" );
my $pager = Data::Page->new;
$pager->total_entries(scalar@stuff);
$pager->entries_per_page(6); # Arbitrary for demo, pick your own page size.
for my $p ( $pager->first_page .. $pager->last_page )
{
$pager->current_page($p);
for my $entry ( $pager->splice(\@stuff) )
{
print $entry, " is on page ", $pager->current_page, $/;
}
}
__END__
a is on page 1
--snip--
z is on page 5