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

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

Maybe you could just mention 1 mainstream language (besides perl) that doesn't accept hex or octal constants where it accepts decimal. You list examples of needing functions to convert hex and octal -- but those other languages also need functions for decimal. In the actual *language*, that the compiler reads -- they accept octal and hex where they accept binary.

BTW -- please note BrowserUK's tag line below -- this part:

"Science is about questioning the status quo. Questioning authority".

Seemed especially pertinent to some peoples' reactions to my asking "why is this this way" (with some answering, "that's the way it is" (status quo), or "as documented" (implicit acceptance of authority).

Um, BrowserUK -- do you walk your taglines, or are they just decorative? :-)

Replies are listed 'Best First'.
Re^5: why are hex values not numbers?
by BrowserUk (Patriarch) on Sep 27, 2016 at 07:00 UTC
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

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

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.
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.

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.