I came up with this before reading
fenLisesi's response, which uses the same "algorithm". Still, it's smaller, infinitesimally more efficient, and (very arguably) easier to follow.
Oh, and I generally come up with completely charred tomatoes mixed in between a combination of tough-as-boiled-beaver and still-dripping-blood beef chunks. (And don't forget the burned onions and the bloody carrot chunks resulting from my pathetic skewering skills, from which I end up with more holes in my thumb than in the vegetables.)
I shouldn't be allowed near a grill.
sub interleave {
my ($a, $b) = @_;
return scalar("B" x $b) if $a < 1;
return "A" . ("B" x $b) if $a < 2;
my $groups = $a - 1;
my $bchunk = int($b / $groups);
my $big = $b % $groups;
return ("A" . ("B" x $bchunk)) x ($groups - $big)
. ("A" . ("B" x ($bchunk + 1))) x $big
. "A";
}