Commit | Line | Data |
---|---|---|
92237e22 | 1 | package Object::Remote::SubCaller; |
2 | ||
3 | use Module::Runtime qw(use_module); | |
4 | ||
5 | sub new { bless({}, ref($_[0])||$_[0]) } | |
6 | ||
7 | sub call { | |
8 | my ($self, $name, @args) = @_; | |
9 | my ($pkg, $sub_name) = $name =~ /^(.+)::([^:]+)$/ | |
10 | or die "Couldn't split ${name} into package and sub"; | |
11 | if (my $sub = use_module($pkg)->can($sub_name)) { | |
12 | return $sub->(@args); | |
13 | } else { | |
14 | die "No subroutine ${sub_name} in package ${pkg}"; | |
15 | } | |
16 | } | |
17 | ||
18 | 1; |