One of the methods:
sub for_each { my $proc = shift ; my $len = @{$_[0]} ; for ( my $i = 0 ; $i < $len ; $i++ ) { my @args = map $_->[$i] , @_ ; &$proc ( @args ) ; } } for_each sub { say $_[0] + $_[1] } , ([10,20,30],[1,2,3])
Using each_arrayref from List::MoreUtils :
sub for_each { my $proc = shift ; my $it = each_arrayref ( @_ ) ; while ( my @elts = $it->() ) { &$proc ( @elts ) } ; } for_each sub { say $_[0] + $_[1] } , ([10,20,30],[1,2,3])
Thanks to Alex for listing List::MoreUtils .
dharmatech
source share