my @a = (1, 2, 3, 4, 5);


sub mycallback {
  return 2 * shift;
}


for (my $i = 0; $i < scalar @a; $i++) {
  print "mycallback($a[$i]) = ", mycallback($a[$i]), "\n";
}


foreach my $x (@a) {
  print "mycallback($x) = ", mycallback($x), "\n";
}


my @b = map mycallback($_), @a;                


my @c = map { $_ * 2 } @a;                     


my $func = \&mycallback;
my @d = map $func->($_), @a;                  


my @e = grep { $_ % 2 == 0 } @a;