Here is a patch for HTML::Template::Expr 0.01. C<sprintf @_> won't
work, due to force evaluation in scalar context.


  @args = ('Hello %s!', 'World');

  printf @args; # "Hello World!"
  print sprintf @args; # "2", oddly


If this is bug of sprintf() itself, we should move onto p5p.

Thanks.


diff -ruP /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/Expr.pm ./Expr.pm
--- /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/Expr.pm   Sat Aug 25 05:13:49 
2001
+++ ./Expr.pm   Tue Oct  9 17:09:47 2001
@@ -90,7 +90,7 @@
 use vars qw(%FUNC);
 %FUNC = 
   (
-   'sprintf' => sub { sprintf(@_); },
+   'sprintf' => sub { sprintf(shift, @_); },
    'substr'  => sub { 
      return substr($_[0], $_[1]) if @_ == 2; 
      return substr($_[0], $_[1], $_[2]);
diff -ruP /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/templates/complex.tmpl 
./templates/complex.tmpl
--- /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/templates/complex.tmpl    Sat 
Aug 25 02:27:06 2001
+++ ./templates/complex.tmpl    Tue Oct  9 17:15:10 2001
@@ -16,6 +16,8 @@
    Math Works, Alright
 </tmpl_if>
 
+Foo + 0.1 = <tmpl_var expr="sprintf('%.1f', (foo + 0.1))">.
+
 My name is <tmpl_var expr="ucfirst(fname)"> <tmpl_var expr="ucfirst(lname)">.
 
 Yo, <tmpl_var expr="ucfirst(substr(fname, 1))"> Alien is phat.
diff -ruP /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/test.pl ./test.pl
--- /usr/local/src/CPAN/build/HTML-Template-Expr-0.01/test.pl   Sat Aug 25 05:08:47 
2001
+++ ./test.pl   Tue Oct  9 17:10:24 2001
@@ -62,6 +62,7 @@
 ok($output =~ /My name is President Clinton/);
 ok($output =~ /Resident Alien is phat/);
 ok($output =~ /Resident has 8 letters, which is less than 10 and greater than 5/);
+ok($output =~ /Foo \+ 0\.1 = 11\.1/);
 
 $template = HTML::Template::Expr->new(path => ['templates'],
                                       filename => 'loop.tmpl',


--
Tatsuhiko Miyagawa <[EMAIL PROTECTED]>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to