in reply to Passing a class method
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"
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Passing a class method
by baxy77bax (Deacon) on Feb 10, 2018 at 16:04 UTC | |
by haukex (Archbishop) on Feb 10, 2018 at 17:47 UTC |