Доброго времени суток !
Помогите решить задачку! нужно вернуть имя вызванного метода для анонимной функции!
package method;
use strict;
use warnings FATAL => 'all';
my @list_method = qw(method_1 method_2 method_3);
sub new {
my ($class, $options) = @_;
__genereate_method();
return bless {}, $class;
}
sub __genereate_method {
no strict 'refs';
foreach my $element (@list_method)
{
*{__PACKAGE__."::$element"} = sub {
my $self = shift;
my $sub_name = (caller(0))[3];
return $sub_name ;
}
}
}
1;
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use FindBin;
use lib "$FindBin::Bin";
use method;
my $method ||= method->new();
isa_ok($method, "method");
foreach my $element (qw(method_1 method_2 method_3))
{
can_ok($method, $element);
}
is($method->method_1, 'method_1');
is($method->method_2, 'method_2');
is($method->method_3, 'method_3');
done_testing();