On Wednesday, November 20, 2002, at 01:45 PM, Tanton Gibbs wrote:
Indeed, if we can't find anything significantly shorter or more obvious than scanf/printf, we should drop it and just use those. For the general case, it's unlikely we _will_ find anything.In situations such as these where you want a variable printed in a special way, wouldn't it be better to use printf? Isn't that what it was designed for?I too don't see much use in the former. The latter puts distance between the formatting and the thing being formatted and that can't be good.my int $i is formatted('%4x'); $i = 255; print $i; # prints '00ff';
I'd certainly like a way to easily (1) treat a string as bin/oct/hex, and (2) stringify a number to bin/oct/hex, because those are two pretty common cases. I've tried tons of things to get a more general syntax, and nothing is really working. The string interpolation case is the most infuriating, because it feels like something that should be easier than it currently is:
using properties?
my int $i is formatted('%4x') = 255;
my int $i is hex = 255;
my int $i = 255 but formatted('%4x');
my int $i = 255 but hex;
named unary op?
my str $s = hex 0xff; # 'ff'
my str $s = hex:2 0xff; # 'ff'
my str $s = hex:4 0xff; # '00ff'
string interpolation? (where we need it most!)
"\$i is $(sprintf('%04x',$i))"
"\$i is $($i but formatted('%4x') )"
"\$i is $($i but hex)"
"\$i is $(hex $i)"
"\$i is <hex:$i>" # a rule-like shorthand for named formats?
Don't know, but I'm not seeing a good solution... This is one of the things Perl4/5 "formats" were meant to help address, but those seem to have fallen into disuse.
MikeL