sub dmap (&\@@) { my $cl = shift; my $list1 = shift; my $list2 = \@_; my @results; for my $i(0..$#$list1) { local $a = $list1->[$i]; local $b = $list2->[$i]; push @results, &$cl; } return @results; }