3 package Devel::REPL::Plugin::PPI;
4 use Devel::REPL::Plugin;
9 use namespace::clean -except => [ 'meta' ];
11 with qw(Devel::REPL::Plugin::Turtles);
13 sub expr_command_ppi {
14 my ( $self, $eval, $code ) = @_;
16 my $document = PPI::Document->new(\$code);
17 my $dumper = PPI::Dumper->new($document);
18 return $dumper->string;
29 Devel::REPL::Plugin::PPI - PPI dumping of Perl code
33 repl> #ppi Devel::REPL
36 PPI::Token::Word 'Devel::REPL'
42 PPI::Statement::Compound
43 PPI::Structure::Block { ... }
44 PPI::Token::Whitespace '\n'
46 PPI::Token::Word 'warn'
47 PPI::Token::Whitespace ' '
48 PPI::Token::Magic '$]'
49 PPI::Token::Structure ';'
50 PPI::Token::Whitespace '\n'
54 This plugin provides a C<ppi> command that uses L<PPI::Dumper> to dump
55 L<PPI>-parsed Perl documents.
57 The code is not actually executed, which means that when used with
58 L<Deve::REPL::Plugin::OutputCache> there is no new value in C<_>.
62 Shawn M Moore E<lt>sartak@gmail.comE<gt>