On Tue, Jul 04, 2006 at 05:06:54PM +1000, Brad Bowman wrote:
: Hello,
:
: It seems that sprintf is will still be around in Perl 6 [1],
: and that sprintf formats will be available using the .as() method.
: While looking at some Python docs [2] I noticed two things that might
: be worth stealing; a sprintf operator (%) and named parameters in
: the format string:
:
: a = '%(lang)s has %(c)03d quote types.' % {'c':2, 'lang':'Python}
:
: (This example made me laugh)
What made me laugh is that Pugs knows the exact value of infinity:
pugs> my $a = {"$^lang has $^c.as('%03d') quote
types."}(:c(Inf),:lang<Perl>)
"Perl has
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
quote types."
: Since perl6 has named parameters, pairs and slurpy hashes, I think
: sprintf should be taught to use them. Syntax is an exercise for the
: reader. (Unifying the '%2$d' with the named syntax would be nice..)
Yes, I18n and L10n requires some kind of templating engine. Whether sprintf
is that engine is another question.
: The operator need is less clear cut. Overloading '%' certainly wouldn't
: make sense in Perl 6 and the presence of .as() may cover the common cases.
It's also possible that some ~~ variant also binds a capture to
an interpolation. That would have the advantage of working in
either order.
: Some alternatives are idiomatic combinations of interpolation and .as(),
: Perl6::Form forms, and custom quote operators/adverbs.
:
: So, any takers?
We don't need any takers, we need any givers. :)
Larry