7 with 'MooseX::Object::Pluggable';
10 is => 'rw', required => 1,
11 default => sub { Term::ReadLine->new('Perl REPL') }
15 is => 'rw', required => 1,
16 default => sub { '$ ' }
20 is => 'rw', required => 1, lazy => 1,
21 default => sub { shift->term->OUT || \*STDOUT; }
26 while ($self->run_once) {
33 my $line = $self->read;
34 return unless defined($line); # undefined value == EOF
35 my @ret = $self->eval($line);
42 return $self->term->readline($self->prompt);
46 my ($self, $line) = @_;
47 my ($to_exec, @rest) = $self->compile($line);
48 return @rest unless defined($to_exec);
49 my @ret = $self->execute($to_exec);
54 my ($self, $line) = @_;
55 my $compiled = eval $self->wrap_as_sub($line);
56 return (undef, $self->error_return("Compile error", $@)) if $@;
61 my ($self, $line) = @_;
62 return qq!sub {\n!.$self->mangle_line($line).qq!\n}\n!;
66 my ($self, $line) = @_;
72 my @ret = eval { shift->(@_) };
73 return $REPL->error_return("Runtime error", $@) if $@;
78 my ($self, $type, $error) = @_;
79 return "${type}: ${error}";
83 my ($self, @ret) = @_;
84 my $fh = $self->out_fh;