http://qs321.pair.com?node_id=1172714

in reply to Re^4: why are hex values not numbers?
in thread why are hex values not numbers?

that doesn't accept hex or octal constants

You're conflating the issue. Mixing apples and blackberries in an attempt to make sanyos.

Perl does accept hex or octal (and binary to boot) constants anywhere it accepts a decimal constant:

```print  for 65, 0x41, 0101, 0b1000001;;
65
65
65
65
[download]```

In addition, it also accepts a string containing a decimal constant, anywhere it takes a number:

```print 65 + 0x41 + 0101 + 0x1000001 + "3.141592653589793238462643383279
+5e001";;
16777443.4159265
[download]```

Making it more flexible than most other languages.

The fact that it does not also accept strings containing non-decimal numeric values is not a language flaw; but a design decision, which if you think about it a little, makes perfect sense.

A string containing just decimal digits, can only be a number.

A string containing "OX84AB97" could be a color code; and one containing "007 James Bond" ...

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^6: why are hex values not numbers?
by perl-diddler (Chaplain) on Sep 27, 2016 at 12:10 UTC
A string containing just decimal digits, can only be a number.
You could just as easily say a string containing just octal, or binary or hexadecimal digits, can only be a number.

A decimal number might be a "leetspeak" word if you were wanting to be cryptic.

Perl determines from *context* if the user is trying to use a variable as a number or a string. If the user tries to perform addition on a string -- it tries to see if the string looks like a number and allows it if it does. But there is no reason it needs to be limited to decimal digits. This is even more evident if you consider octal digits as an example. Using a rule of 'leading 0' for octal or 'leading 0x' for hex seem fairly safe -- can you give an example where doing so would be a problem?

Come-on BuK, question the status quo! ;-)

You could just as easily say a string containing just octal, or binary or hexadecimal digits, can only be a number.

Except that you would be completely wrong.

• ABBA
• Da
• face
• Abe
• EFF

... and many, many more are clearly not only numbers.

I did specify that it would have to start with 0x to be a hex constant, and 0 to be an octal, so are you saying that 0xABBA, 0xDA, 0xface, 0xAbe, 0xEFF would all, clearly, not be hex values?

I'm sorry, but at lets at least try to stay on the same page, and forgive me if I wrote this non-linearly, but such is the PM-medium.

Come-on BuK, question the status quo!

I do all the time. Unlike you, I don't just ignore the answers.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.
BuK:...re: question the status quo
I do all the time. Unlike you, I don't just ignore the answers.
"In the absence of evidence, opinion is indistinguishable from prejudice."

Note, quoting from circularly obtained or derived sources is not 'evidence'.