in reply to Passing a dynamic list of array names to a function

zip uses a prototype so you can do

zip(@a1, @a2, @a3)

What's actually passed to zip is a reference to each to those arrays. By overriding the prototype, you can pass those references yourself.

&zip(\@a1, \@a2, \@a3)

So next, we need to build a list of the reference. Why are you using a hash for ordered data?!

&zip map $hoa->{"obj$_"}, 1..keys(%$hoa)