use strict; use warnings; sub make_animal_subs { my $animal = shift; return sub{print $animal, "\n";}; } my $function_tiger = make_animal_subs('tiger'); my $function_dog = make_animal_subs('dog'); $function_tiger->(); &$function_dog(); # Or use the alternate syntax.