That is essentially what a map is - although your syntax is wrong. Unless you do something like: map { sub {...}->(...) } @foo to force the execution of the sub, you will simply get a set of sub {...} anonymous subroutines the same size as @foo.
The contents of the BLOCK in the map call are what I think you are thinking of as the sub. OTOH, something like:
@subs = map {
my $something = $_;
sub {
blah( $something, ... );
}
} @data;
would give you a set of subroutines that each operate on a specific item in @data. In this case, you are still transforming @data into a set of subs working on a closures.