WoodyWeaver has asked for the wisdom of the Perl Monks concerning the following question:

using Data::Dump qw(dump) a field inside of a dumped variable reads


I think this is four characters, and the \36 for example refers to the ascii character chr(30)? (This is supposed to be an octet stream corresponding to an IP address of

I don't understand the \36 notation. Can someone provide a clue?

Replies are listed 'Best First'.
Re: syntax of Data::Dump
by Loops (Curate) on Nov 05, 2014 at 20:54 UTC
    Yes, it's 4 binary bytes in octal notation. Can read it as 8 * first digit + second digit. the leading \n is a newline character, which is ASCII 10 (octal 12).
    use Data::Dump qw(dump); print dump( pack("c*", 10, 3, 30, 21 ) ); # outputs: "\n\3\36\25"

    Okay, that "\n" isn't octal notation obviously, it's the Perl string escape code.

      Thank you, but I'm still missing a clue. The reason I remain confused is perlop:
      The following escape sequences are available in constructs that interpolate, and in transliterations:
          Sequence Note Description
          \t tab (HT, TAB)
          \n newline (NL)
          \r return (CR)
          \f form feed (FF)
          \b backspace (BS)
          \a alarm (bell) (BEL)
          \e escape (ESC)
          \x{263A} 1,8 hex char (example: SMILEY)
          \x1b 2,8 restricted range hex char (example: ESC)
          \N{name} 3 named Unicode character or character sequence
          \N{U+263D} 4,8 Unicode character (example: FIRST QUARTER MOON)
          \c[ 5 control char (example: chr(27))
          \o{23072} 6,8 octal char (example: SMILEY)
          \033 7,8 restricted range octal char (example: ESC)
      Should this not be "\n\003\036\025"?

        Well footnote 7 does say:

        Some contexts allow 2 or even 1 digit, but any usage without exactly three digits, the first being a zero, may give unintended results. (For example, in a regular expression it may be confused with a backreference; see "Octal escapes" in perlrebackslash.)

        So it would be much more clear with the 3 digit representation. But in this particular context, it works out:

        use feature 'say'; use Data::Dump qw(dump); say dump( pack("c*", 10, 3, 30, 21 ) ); # outputs "\n\3\36\25" say dump( unpack("c*", "\n\3\36\25") ); # outputs (10, 3, 30, 21) say dump( unpack("c*", "\n\003\036\025") ); # outputs (10, 3, 30, 21)
Re: syntax of Data::Dump (perlquote oct octal escape perlrebackslash)
by Anonymous Monk on Nov 06, 2014 at 01:36 UTC