From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: Babel: help with tables and code blocks? Date: Sun, 08 Aug 2010 15:34:02 -0400 Message-ID: <87r5i8dhlh.fsf@stats.ox.ac.uk> References: <878w4hcyzz.fsf@bunting.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=37609 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OiBdR-0005d1-Mf for emacs-orgmode@gnu.org; Sun, 08 Aug 2010 15:34:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OiBdQ-0001Yg-JC for emacs-orgmode@gnu.org; Sun, 08 Aug 2010 15:34:17 -0400 Received: from markov.stats.ox.ac.uk ([163.1.210.1]:48077) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OiBdQ-0001YP-CW for emacs-orgmode@gnu.org; Sun, 08 Aug 2010 15:34:16 -0400 In-Reply-To: <878w4hcyzz.fsf@bunting.net.au> (Bart Bunting's message of "Sun, 08 Aug 2010 18:03:28 +1000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bart Bunting Cc: emacs-orgmode@gnu.org Bart Bunting writes: > Hi everyone, > > I'm trying to get my head around babel and getting info back into a > table. > > The below org file tracks expenses and the perl code simply sums them > up. > > The code is working but I now want to get the total back into another table. What I have is not > working can someone tell me what I'm doing wrong here? > > Cheers > > Bart > > * Expenses > > #+tblname: expenses > |------------+-----------------------------------+--------| > | Date | What | Amount | > |------------+-----------------------------------+--------| > | 2010-07-26 | Breakfast | 5 | > | 2010-07-26 | groceries | 8.5 | > | 2010-07-26 | butchers - chicken | 5.5 | > | 2010-07-27 | umart - video card, kvm, speakers | 136 | > > * Code > > #+srcname: totals > #+begin_src perl :var details=expenses[1:-1] > my $total = 0; > foreach my $row (@$details) { > $total += @$row[2]; > } > > return $total; > #+end_src > > #+results: totals > : 155 > > > > * Totals > > | Total | #ERROR | > #+TBLFM: $2=#+call: totals(details=expenses) Hi Bart, You've mixed up #+call and sbe there. sbe is what you want to use in a table formula; #+call and #+lob are for standalone lines. Here are a few examples of different ways to do what you're doing. Hopefully they make things clear. Dan --8<---------------cut here---------------start------------->8--- * Totals ** Using a table formula *** Relying on default argument to totals block | Total | 155 | #+TBLFM: $2='(sbe "totals") *** Providing argument explicitly The dots are a bug. We'll fix it. **** version 1 | Total | 155... | #+TBLFM: $2='(sbe "totals(details=expenses[1:-1])") **** version 2 | Total | 155... | #+TBLFM: $2='(sbe "totals" (details "expenses[1:-1]")) ** Using call/lob #+call and #+lob are synonyms *** Relying on default argument to totals block #+call: totals() #+results: totals() : 155 or equivalently (it outputs into the same results block): #+lob: totals() *** Providing argument explicitly #+call: totals(details=expenses[1:-1]) #+results: totals(details=expenses[1:-1]) : 155 --8<---------------cut here---------------end--------------->8--- > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode