Perl - wbudowana funkcja „łącząca” dwie tablice?

Chcę połączyć dwie tablice o równej długości w jedną tablicę, pobierając pierwszy element z tablicy A, pierwszy element z tablicy B; drugi element z A, drugi element z B itd. Poniższy program ilustruje algorytm:

# file zipper.pl
use strict;
use warnings;
use 5.010;

my @keys   = qw/abel baker charlie dog easy fox/;
my @values = qw/a b c d e f/;

# ==> Is there a builtin function that is equivalent of zipper()? <==
#
my %hash = zipper( \@keys, \@values );

while ( my ( $k, $v ) = each %hash ) {
    say "$k=$v";
}

# zipper(): Take two equal-length arrays and merge them (one from A, one from B,
# another from A, another from B, etc.) into a single array.
#
sub zipper {
    my $k_ref = shift;
    my $v_ref = shift;
    die "Arrays must be equal length" if @$k_ref != @$v_ref;
    my $i = 0;
    return map { $k_ref->[ $i++ ], $_ } @$v_ref;
}

Wydajność

$ ./zipper.pl 
easy=e
dog=d
fox=f
charlie=c
baker=b
abel=a

Zastanawiam się, czy przeoczyłem wbudowaną funkcję w Perlu, która zrobi odpowiednik suwaka (). Będzie w najgłębszej pętli programu i musi działać jak najszybciej. Jeśli nie ma wbudowanego lub modułu CPAN, czy ktoś może ulepszyć moją implementację?

questionAnswers(4)

yourAnswerToTheQuestion