in reply to interleaving lists

For filling a hash, assignment to a hash slice is probably the best way:
my %index; @index{@list1} = @list2;
If you actually want a list as the result, rather than a hash, a for loop would work:
for (my $i = 0; $i <= $#list1; $i++) { push @result, $list1[$i], $list2[$i]; }
The push could also be done as a nested loop, if there are lots of arrays to interleave.

Anyway, that's a very basic solution; much fancier solutions could be written to satisfy more requirements for the interleaving.