in reply to Re^2: Invoking a string reference to a anonymous subroutine
in thread Invoking a string reference to a anonymous subroutine

> Where is the problem?

My code worked and the code you are showing now will also work.

But maybe you should care to define _handler within the scope of your private $_parse... variables to have a proper closure?

Otherwise Variable "$_parse_element_configuration" is not available at (eval 8) line 2."

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^4: Invoking a string reference to a anonymous subroutine
by Superfox il Volpone (Sexton) on Jan 15, 2014 at 12:48 UTC
    Hi Rolf,

    thanks for your reply.

    But maybe you should care to define _handler within the scope of your private $_parse... variables to have a proper closure?
    I believe you are right. I have come up with the following code:
    my $_parse_handler = sub { my $self = shift; my $function = shift . '0'; # installed handlers my $_parse_element_configuration0 = $_parse_element_configuration; my $_parse_element_machines0 = $_parse_element_machines; eval "\$$function"; }; [...] my $handler = $self->$_parse_handler("_parse_element_" . $element->nam +e() ); $self->$handler($element);
    Anyway I am getting the impression I am trying to bend the language to something it was not designed to do.

    Kind regards,
    s.fox
      Ugh... :-|

      Look now this really doesn't make much sense anymore.

      I was under the impression that you also need to call the handlers manually as private methods??? (they are now restricted to the sub)

      If not _please_ use dispatch tables!

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      update

      older discussions covering dispatch tables (google ranked)