Oh, it loops indefinately, all right. I ran it | head
. And yes, that is the exact code.
If you grab the top of the output, do the see the odd value of @_ = 312321,123312? I would think that @_ would contain the same value as the output from c() since it uses the same map statement (- the pop). But I can't shake the feeling I'm missing something simple here (as I often do) :)
Btw, I split the subroutine up into individual statements for debugging. It used many fewer temporary variables at first.