Попробуйте это
use strict;
use warnings;
sub mySub{
return undef;
}
my @arr = (1,2,3,4,5,6,7,8,9);
my @arr2 = map(&mySub, @arr);
print @arr." ".@arr2;
Если вам нужно получить список, содержащий undefs, вам нужно явно вернуть undef. Дело в том, что map вызывает ваш mySub в контексте массива (проверьте, что из этого подпрограммы вы хотите получить из wantarray) оператор return по существу возвращает пустой список каждый раз, когда вызывается ваша подпрограмма, что в итоге приводит к пустому массиву