my @result = map { f($_) ? g($_) : () } @list; # or: my @result; for (@list) { push(@result, g($_)) if (f($_)); }