in reply to Extracting subset from list: map unsuitable?

You don't ave an else part. Use an empty list, and it'll work.
my @someFruit = map { if ($_ =~ m/^[ap]/) { $_;} else { (); } } @allFr +uit;
I now get:
no. of some fruit: 2
some fruit: apple*apricot
Just to show you that it can be made to work. I'm not sure what is inserted in your version, I would have though of undef, but I get no warnings, so likely it's a boolean false (0 as number and "" as string), same value as !1 returns.

For this particular application, it would be wiser to use grep, but you could have used ? : too. And there's no need for the $_ =~. (Or the m.)

my @someFruit = map { m/^[ap]/ ? $_ : () } @allFruit;
my @someFruit = grep { m/^[ap]/ } @allFruit;