http://www.perlmonks.org?node_id=863083


in reply to Perl5 Internal Representation of string variable

It would not make sense to escape or backslash any characters at all in the internal representation -- they are, byte for byte, exactly what they are.

A perl "string" is just a contextual perspective on the scalar datatype. Eg, if you want to compare two scalars that contain string values, you would use "eq" to indicate that is the context. If the scalars contain numerical values and you want to compare them as numbers, you would use "==". You can use "eq" on scalars that are just numbers which treats them, contextually, as strings. Ie, "string" is not a datatype in perl. There are only three datatypes: scalars, arrays, hashes.

  • Comment on Re: Perl5 Internal Representation of string variable

Replies are listed 'Best First'.
Re^2: Perl5 Internal Representation of string variable
by flexvault (Monsignor) on Oct 02, 2010 at 16:54 UTC

    Okay, now I'm confused at a higher level!

    My understanding of the perl scalar is the same as you describe, so is it the s/// operator that requires backslash characters?

    Thank you

      You need the backslash \, when the following character has a special meaning. Whether that is required or not is context dependent. In a regex you have to backslash the [ character because that character has a special meaning in a regex. But in a print statement this is not necessary.