add sub call code
[scpubgit/Object-Remote.git] / lib / Object / Remote / SubCaller.pm
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;