On Wednesday, November 20, 2002, at 11:01  AM, Dave Storrs wrote:
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.
.... and _I'm_ trying to promote the reuse of the old "oct/hex" functions to do a similar both-way thing, such that:

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

Reply via email to