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]