NAME Ledger::Parser - Parse Ledger journals VERSION version 0.01 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 = $tx[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. 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.