The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.825

  • Added PPI::Statement::Include::type object method
  • Added PPI::Statement::Include::module object method
  • Added PPI::Statement::Include::pragma object method
  • Added PPI::Statement::Include::version object method
  • Overloaded == as "the same object" for PPI::Element
  • Overloaded eq as "->content is the same" for PPI::Element
  • Overloaded bool as always true, to prevent an error
  • Added PPI::Statement::Package::namespace object method
  • 100% round-trip safe. What goes in, will come out.
  • Reduced leaks by 95%. Process size 30meg after 5000 files. Still some leaks remaining when Lexing errors out.
  • Seperated largest Tokens into their own classes. This aligns token class structure with that of ::Statement and ::Structure
  • Rewrote PPI::Node::DESTROY several times while hunting down more leaks
  • Fixed Tokenizer crash on empty subroutine prototypes such as C< sub foo() {} >
  • Treat unexpected braces as an implicit close, to make the lexer more resilient
  • Added PPI::Statement::UnmatchedBrace (name suggested by Abhijit Menon-Sen) to handle closing braces found at the base of a Document.
  • Enabled foo'bar package notation again.
  • Getting close to the first 0.900 series beta release

Documentation

PPI

Modules

PPI
Parse and manipulate Perl code non-destructively, without using perl itself
A single cohesive Perl document
The abstract Element class, a base for all source objects
The PPI Lexer
Abstract PPI Node class, an Element that can contain other Elements

Provides

in lib/PPI/Base.pm
in lib/PPI/Document/Fragment.pm
in lib/PPI/Format/HTML.pm
in lib/PPI/Lexer/Dump.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Compound.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Include.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Package.pm
in lib/PPI/Statement/Scheduled.pm
in lib/PPI/Statement/Sub.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Variable.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Attribute.pm
in lib/PPI/Token/Bareword.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Comment.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Magic.pm
in lib/PPI/Token/Number.pm
in lib/PPI/Token/Operator.pm
in lib/PPI/Token/Pod.pm
in lib/PPI/Token/Quote.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Quote/Full.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Quote/Simple.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Symbol.pm
in lib/PPI/Token/Unknown.pm
in lib/PPI/Token/Whitespace.pm
in lib/PPI/Tokenizer.pm
in lib/PPI/Tokenizer/Quote/Full.pm
in lib/PPI/Tokenizer/Quote/Simple.pm