On Wednesday, November 20, 2002, at 11:01 AM, Dave Storrs wrote:
.... and _I'm_ trying to promote the reuse of the old "oct/hex" functions to do a similar both-way thing, such that:Actually, this would be a good reason to have a function called "literal" -- if it went both ways. So, I could do this:print literal(200+55):hex; # == print "0xff"; print literal("0xff)); # == print 255;[EMAIL PROTECTED] wrote:why not str ?print str( 200+55 :"format"=>"hex"); # == print "0xff"; print str("0xff"); # == print 255;It's just a cognitive difference--in my example, literal() would return a string if given a number and return a number if given a string (in each case, the output would be precisely what you would get had you written the input as a literal in the other format, hence the 'literal' name). In your example, str() does the same thing--but I would suggest that a function named 'str' should always return a string.
my $i = num '10'; # $i is a num, 10.0
my $i = int '10'; # $i is an int
my $i = sci '10'; # $i is a num, 10.0
my $i = bin '10'; # $i == 2
my $i = oct '10'; # $i == 8
my $i = hex '10'; # $i == 16
my int $i = 255;
my str $s = num $i; # output numeric $i as normal
my str $s = int $i; # output numeric $i as normal
my str $s = sci $i; # output $i as exponential notation
my str $s = bin $i; # output $i as binary
my str $s = oct $i; # output $i as octal
my str $s = hex $i; # output $i as hex
.... but people just aren't biting, so far. Don't see why not, I think it's keen.
;-)
MikeL