my $data = "1ABCD2EFGH3IJKL4MNOP5QRST6UVWX"; my $entry_size = 5; my $a_size = $entry_size - 1; my @out = unpack "(CA$a_size)*", $data; push @out, [ splice @out, 0, 2 ] for 1 .. @out / 2;