Note that my ($self,$x) = shift; is not correct, it should be my ($self,$x) = @_; instead (several times in your code).
While it is possible to do what you want (Method Names as Strings), it seems like it might not be a good idea, and instead be the beginning of a bad design pattern - if you could explain why you think you need this and what you want to accomplish, perhaps we can suggest a better approach.
use warnings; use strict; { package A; sub new { bless {}, shift } sub _exe { my $self = shift; my $meth = shift; $self->$meth(@_); } } { package B; use base 'A'; sub new { bless {}, shift } sub _what { my $self = shift; $self->_exe('_print', @_); } sub _print { my ($self, @args) = @_; print @args, "\n"; } } my $b = B->new; $b->_what("foo","bar"); # prints "foobar"
In reply to Re: Passing a class method
by haukex
in thread Passing a class method
by baxy77bax
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |