Hi Benjamin,

> I want to format this number of seconds as a number of minutes and a
number of seconds. I would rather do this formatting within within the
template than by altering the data in the hash from within my Perl script.

Perhaps the best approach is to define your own virtual method.

It's described here:

http://www.template-toolkit.org/docs/manual/VMethods.html#section_Defining_Custom_Virtual_Methods

Although that documentation is a little out of date. There's a better way to do it in more recent versions, like this (untested):

  my $tt = Template->new(...);

  $tt->context->define_vmethod(
      text => hm => sub {
          my $seconds = shift;
          return sprintf("%d:%02d", int($seconds / 60), $seconds % 60);
      }
  );

Here we've defined a text (scalar) virtual method call 'hm'.

Then you can call it like this:

  [% data.$cdr.billsec.hm %]

Cheers
Andy


_______________________________________________
templates mailing list
templates@template-toolkit.org
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to