my $foo = sub { print "Foo\n"; }; my $bar = sub { print "Bar\n"; }; my $x = $foo; $x->(); # prints "Foo" $x = $bar; $x->(); # prints "Bar" #### my %code = ( foo => sub { print "Foo\n"; }, bar => sub { print "Bar\n"; }, ); $code{foo}(); # prints "Foo" $code{bar}(); # prints "Bar" #### sub bar { my( $output ) = @_; $output->(); } my $foo1 = sub { print "Foo\n"; }; my $foo2 = sub { print "Bar\n"; }; bar( $foo1 ); # prints "Foo" bar( $foo2 ); # prints "Bar"