Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

syntax of Data::Dump

by WoodyWeaver (Monk)
on Nov 05, 2014 at 20:50 UTC ( [id://1106250]=perlquestion: print w/replies, xml ) Need Help??

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

"\n\3\36\25"

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

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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1106250]
Approved by toolic
Front-paged by boftx
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (2)
As of 2024-04-26 00:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found