sub Foo {print "Foo!\n"} # named subroutine / non-closure my $foo= sub { print "Bar!\n"}; # anonymous / non-closure my $bar= sub { $foo->() }; # anonymous / closure sub FooBar { $bar->() } # named subroutine / closure sub takes_a_callback { my $callback=shift; $callback->(); } takes_a_callback($_) foreach \&Foo,$foo,$bar,\&FooBar;