Andrew Bettison's Office - double-entry accounting system in Perl