Commit | Line | Data |
---|---|---|
51e1f1e1 | 1 | #!/usr/bin/env perl |
2 | ||
6f914695 | 3 | use strictures 1; |
4 | use Eval::WithLexicals; | |
5 | use Term::ReadLine; | |
51e1f1e1 | 6 | use Data::Dumper; |
8d732f30 | 7 | use Getopt::Long; |
8 | ||
9 | GetOptions( | |
10 | "plugin=s" => \my @plugins | |
11 | ); | |
51e1f1e1 | 12 | |
13 | $SIG{INT} = sub { warn "SIGINT\n" }; | |
14 | ||
15 | { package Data::Dumper; no strict 'vars'; | |
16 | $Terse = $Indent = $Useqq = $Deparse = $Sortkeys = 1; | |
17 | $Quotekeys = 0; | |
18 | } | |
6f914695 | 19 | |
8d732f30 | 20 | my $eval = @plugins |
21 | ? Eval::WithLexicals->with_plugins(@plugins)->new | |
22 | : Eval::WithLexicals->new; | |
23 | ||
6f914695 | 24 | my $read = Term::ReadLine->new('Perl REPL'); |
25 | while (1) { | |
26 | my $line = $read->readline('re.pl$ '); | |
27 | exit unless defined $line; | |
51e1f1e1 | 28 | my @ret; eval { |
6f914695 | 29 | local $SIG{INT} = sub { die "Caught SIGINT" }; |
51e1f1e1 | 30 | @ret = $eval->eval($line); 1; |
31 | } or @ret = ("Error!", $@); | |
6f914695 | 32 | print Dumper @ret; |
33 | } | |
ed9faa55 | 34 | |
35 | __END__ | |
36 | ||
37 | =head1 NAME | |
38 | ||
39 | tinyrepl - Tiny REPL | |
40 | ||
41 | =head1 SYNOPSIS | |
42 | ||
43 | $ tinyrepl | |
44 | re.pl$ "s" x 5 | |
45 | "sssss" | |
46 | re.pl$ exit | |
47 | ||
48 | $ tinyrepl --plugin HintPersistence | |
49 | ||
50 | =head1 DESCRIPTION | |
51 | ||
52 | tinyrepl is a minimal pure-Perl REPL. It is just a small wrapper | |
53 | around L<Eval::WithLexicals>. | |
54 | ||
55 | =head1 OPTIONS | |
56 | ||
57 | =over 4 | |
58 | ||
59 | =item C<--plugin=> | |
60 | ||
61 | Loads a plugin into the REPL. See L<Eval::WithLexicals/with_plugins>. | |
62 | ||
63 | =back | |
64 | ||
54153012 | 65 | =head1 SUPPORT |
ed9faa55 | 66 | |
54153012 | 67 | See L<Eval::WithLexicals> for support and contact information. |
ed9faa55 | 68 | |
54153012 | 69 | =head1 AUTHORS |
ed9faa55 | 70 | |
54153012 | 71 | See L<Eval::WithLexicals> for authors. |
ed9faa55 | 72 | |
54153012 | 73 | =head1 COPYRIGHT AND LICENSE |
ed9faa55 | 74 | |
54153012 | 75 | See L<Eval::WithLexicals> for the copyright and license. |
ed9faa55 | 76 | |
77 | =cut |