Perlのrangeは、間隔が指定できなかったはずなので、
FPっぽくrange関数を定義。
sub range($$$) {
my ($begin, $end, $step) = @_;
return ($begin < $end) ? ($begin,range($begin+$step, $end, $step)) : $end;
}
sub slicer($$) {
my ($pieces, $n) = @_;
return map { substr($str, $_, $step) } range(0, length $str, $step);
}