use strict; use warnings; { package Dispatch; sub render_template { my ($action, $params) = @_; print "render_template( action => $action, params => $params )\n"; } *home = *donate = *news = sub { my $pkg = shift; my ($action, $params) = @_; return render_template($action, $params); }; sub samples { my ($dbh) = shift; print "samples( dbh = $dbh )\n"; } sub samp { my $pkg = shift; samples('$DBH'); } sub AUTOLOAD { my $pkg = shift; our $AUTOLOAD; print "Error: no such function $AUTOLOAD ( @_ )\n"; } } # test: for my $act ( qw( home donate news samp bogus )) { Dispatch->$act($act,"PARAMS"); } #### { no warnings 'once'; . . . }