Steve Bertrand wrote:
> Hi all,
>
> Within a CGI environment, I'm trying to do a dispatch table test, but
> can't figure out how to call the coderef as a method. Here is the
> working code. I'll describe what doesn't work afterwards:
>
> sub perform_find {
>
> my $self = shift;
>
> my $find_this = $self->query->param( 'find_this' );
> my $search_data = $self->query->param( 'search_data' );
>
> my %find_commands = (
>
> # call by local function
> plan_by_id => \&_find_plan_by_id,
> );
>
> # and pass in $self explicitly
> $find_commands{ $find_this }( $self, $search_data );
> }
>
> __END__
>
> Things progress properly using the above. What I don't understand, is
> why I have to pass in $self as a param to the dispatch table. What
> didn't work is this:
>
>
> sub perform_find {
>
> my $self = shift;
>
> my $find_this = $self->query->param( 'find_this' );
> my $search_data = $self->query->param( 'search_data' );
>
> my %find_commands = (
>
> # I'm trying to call the method on myself
> plan_by_id => \&{ $self->_find_plan_by_id },
> );
>
> # ...obj passed in implicitly as expected
> $find_commands{ $find_this }( $search_data );
> }
>
> __END__
>
> ...or any variant of trying to use the method-call syntax within a
> dispatch table coderef.
I suppose I should have actually asked a question ;)
Can anyone point out what I am missing?
Steve
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/