NAME Ledger::Parser - Parse Ledger journals VERSION version 0.02 SYNOPSIS use 5.010; use Ledger::Parser; my $ledgerp = Ledger::Parser->new(); # parse a file my $journal = $ledgerp->parse_file("$ENV{HOME}/money.dat"); # parse a string $journal = $ledgerp->parse(<get_transactions; # get the postings of a transaction my $postings = $txs->[0]->get_postings; # get all the mentioned accounts my $accts = $journal->get_accounts; DESCRIPTION This module parses Ledger journal into Perl document object. See http://ledger-cli.org/ for more on Ledger, the command-line double-entry accounting system software. This module uses Log::Any logging framework. This module uses Moo object system. ATTRIBUTES METHODS new() Create a new parser instance. $ledgerp->parse($str | $arrayref | $coderef | $filehandle) => $journal Parse ledger journal (which can be contained in a $str, an array of lines $arrayref, a subroutine which will be called for chunks until it returns undef, or a filehandle). Will die if there are parsing errors in journal. Returns Ledger::Journal object. The object will contain a series of Ledger::Transaction objects, which themselves will be comprised of a series of Ledger::Posting objects. $orgp->parse_file($filename) => $journal Just like parse(), but will load document from file instead. FAQ Why? Ledger is already a command-line program. It even has 'lisp' output. I am not trying to reimplement/port Ledger to Perl. This module doesn't do reporting or parse expressions or many other Ledger features. I use this module mainly to insert/delete/edit transactions to journal file, e.g. for programatically reconciling journal with internet banking statement, or for shortcuts (see App::LedgerUtils for example). AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Steven Haryanto. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.