On Sat, Mar 12, 2005 at 11:57:39PM +0100, 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/;
Well, we do already have: print $foo.as('%03d'), $bar.as('%15s') which works on interpolated values as well. It als puts the variable name out front, since the name is more important than the pattern in most cases. : 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. I don't see that this buys us anything over just shortening "sprintf" to something shorter, like: print as '%03d %15s', $foo, $bar; And your argument list falls out naturally from making "as" a listop. Plus it naturally lets you say other "as-ly" things: print as MyBigInt, $foo, $bar; : If this feels weird, just think of s///e, : where the RHS is also not a string. Um, actually we did away with /e in Perl 6... Larry