use strict; use Data::Dumper; my $string="abcdefghijklmnopqrstuvwxyz"; my $aryref= []; chunk_em($string,$aryref,5); print Dumper($aryref); sub chunk_em { my $string=shift; my $aryref=shift; my $num=shift; my ($first, $second)=unpack("A${num}A*", $string); push @$aryref, $first; chunk_em($second,$aryref,5) if $second; return $aryref; } __END__ $VAR1 = [ 'abcde', 'fghij', 'klmno', 'pqrst', 'uvwxy', 'z' ];