in reply to Grep Fuunction

As Abigail-II has explained the functionality, here's an example of how they can come in handy. Before:
my @foo_bar; foreach my $foo (@fooz) { if ($foo > 12) { push(@foo_bar, $foo - 1); } }
Instead you could use a combination of map and grep:
my @foo_bar = map { $_ - 1 } grep { $_ > 12 } @fooz;
These constructs can be chained together and that is what makes them highly adaptable. Data flows right to left, though, so watch out.