Indeed; the extra referencing is being added by the \&buildlist($_), which is an unnecessary complication. There's no need to build a reference here at all, since buildlist() already explicitly returns one, and it's arguably confusing because \& is normally used to take a reference to a subroutine, not to a return value.
Removing the \& there would enable all the ${$$...}-type constructions to be simplified, so for example the assignment to @tmp would then become just @{$ref->[3]}. This is probably a Good Thing.
In reply to Re^2: array reference madness
by Porculus
in thread array reference madness
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |