Juerd wrote:

Without introduction, I'll just present the syntax idea:

   f/%03d %15s/$foo, $bar/;

This gives s?printf to any expression with short and concise syntax,
making printf redundant, which means I won't even have to start a
discussion about sayf :)

   printf "%03d %15s", $foo, $bar;

vs

   print f/%03d %15s/$foo, $bar/;

Of course, this is s///-like in quoting behaviour, so f[][] or f"""
should work just as well. The RHS is not a string, but parsed as an
expression in list context. If this feels weird, just think of s///e,
where the RHS is also not a string.


Why not just rename C< sprintf > to C< format > and ditch printf and sayf?

I will also remind you of the Scalar C< .as() > method, which sprintf's it's value.

   print "$foo.as('%03d') $bar.as('%15s')";

But I'd still like to keep something works on a whole list at once for those cases where I'm doing several non-trivial expressions at once.

-- Rod Adams



Reply via email to