use warnings; use strict; use PPI; use PPI::Dumper; my $Document = PPI::Document->new(\<<'END'); use Function::Parameters; use Types::Standard qw( Num ); fun foo (Num $x) { $x + 1 } END my $Dumper = PPI::Dumper->new( $Document ); $Dumper->print; __END__ PPI::Document PPI::Statement::Include PPI::Token::Word 'use' PPI::Token::Whitespace ' ' PPI::Token::Word 'Function::Parameters' PPI::Token::Structure ';' PPI::Token::Whitespace '\n' PPI::Statement::Include PPI::Token::Word 'use' PPI::Token::Whitespace ' ' PPI::Token::Word 'Types::Standard' PPI::Token::Whitespace ' ' PPI::Token::QuoteLike::Words 'qw( Num )' PPI::Token::Structure ';' PPI::Token::Whitespace '\n' PPI::Token::Whitespace '\n' PPI::Statement PPI::Token::Word 'fun' PPI::Token::Whitespace ' ' PPI::Token::Word 'foo' PPI::Token::Whitespace ' ' PPI::Structure::List ( ... ) PPI::Statement::Expression PPI::Token::Word 'Num' PPI::Token::Whitespace ' ' PPI::Token::Symbol '$x' PPI::Token::Whitespace ' ' PPI::Structure::Block { ... } PPI::Token::Whitespace '\n' PPI::Token::Whitespace ' ' PPI::Statement PPI::Token::Symbol '$x' PPI::Token::Whitespace ' ' PPI::Token::Operator '+' PPI::Token::Whitespace ' ' PPI::Token::Number '1' PPI::Token::Whitespace '\n' PPI::Token::Whitespace '\n'