1 package Object::Remote::Role::Connector::PerlInterpreter;
4 use Object::Remote::ModuleSender;
5 use Object::Remote::Handle;
6 use Scalar::Util qw(blessed);
9 with 'Object::Remote::Role::Connector';
11 around connect => sub {
12 my ($orig, $self) = (shift, shift);
13 my $conn = $self->$orig(@_);
15 grep {blessed($_) && $_->isa('Object::Remote::ModuleLoader::Hook') }
17 my $sender = $hook ? $hook->sender : Object::Remote::ModuleSender->new;
18 Object::Remote::Handle->new(
20 class => 'Object::Remote::ModuleLoader',
21 args => { module_sender => $sender }
26 sub _perl_command { 'perl', '-' }
33 $self->_perl_command(@_),
34 ) or die "Failed to run perl at '$_[0]': $!";
35 require Object::Remote::FatNode;
36 print $foreign_stdin $Object::Remote::FatNode::DATA, "__END__\n"
37 or die "Failed to send fatpacked data to new node on '$_[0]': $!";
38 return ($foreign_stdin, $foreign_stdout, $pid);