つーかさ、毎度そうだけどスクリプト言語が短く書けるということに
あぐらをかいて、自分で関数を作らないから、
自分の限界=他人が用意してくれたものになるんだよ。お前ら。

例えばこんな汎用関数(batch_shift)を作ればスマートに書けるだろ?

while(@list) {
 my $i = 0;
 my @results = batch_shift { ($i+=$_) <= 100 } \@list;
 # @resultsの固まりに処理をする
}

batch_shiftは条件を満たしている限り取り出していくshiftの拡張版
grepでも近いことはできるが、@listを破壊するのと
条件を満たさなくなった時点で打ち切るという点で違う。

batch_shift の実装ぐらい省略していいよな?
まあ、俺はここまで考えてから、batch_shiftを実装する前に
既存のモジュールでこのようなことが出来るものがないか探す工程を入れるけど。