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

Changes for version 0.819

  • Many parts of PPI are VASTLY changed in this revision
  • Breaks API compatibility heavily
  • Adds dependency on List::MoreUtils
  • Added PPI::Lexer support for CHECK blocks
  • Added PPI::Document::load method
  • Added PPI::Document::save method
  • Added PPI::Document::index_locations method
  • Added PPI::Document::flush_locations method
  • Added PPI::Element::top method
  • Added PPI::Element::document method
  • Renamed PPI::Element::extract -> PPI::Element::remove
  • Added test script for element-y stuff
  • Optimisation across the board using List::Any
  • Added PPI::Node::first_child method
  • Added PPI::Node::last_child method
  • Added PPI::Element::clone method
  • Removed Filehandle support from PPI::Tokenizer, to allow the ability to rollback source lines into the buffer if needed.
  • Added POD documentation for PPI::Element
  • Added POD documentation for PPI::Node
  • Added POD documentation for PPI::Document

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 sample/syntax/AppLib/CGI.pm
in sample/syntax/AppLib/Error.pm
in sample/syntax/AppLib/Page.pm
in sample/syntax/AppLib/PageFactory.pm
in sample/syntax/AppLib/Parser.pm
in lib/PPI/Base.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.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.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/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Quote.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Quote/Full.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Quote/Simple.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/Unknown.pm
in lib/PPI/Token/Classes.pm
in lib/PPI/Token/_Pod.pm
in lib/PPI/Tokenizer.pm
in lib/PPI/Tokenizer/Quote/Full.pm
in lib/PPI/Tokenizer/Quote/Simple.pm