Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: syntax of Data::Dump

by Loops (Curate)
on Nov 05, 2014 at 20:54 UTC ( #1106251=note: print w/replies, xml ) Need Help??


in reply to syntax of Data::Dump

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.

Replies are listed 'Best First'.
Re^2: syntax of Data::Dump
by WoodyWeaver (Monk) on Nov 05, 2014 at 21:14 UTC
    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)
        Ah, that was the necessary clue. Sometimes the perl interpreter is too clever for me. Many thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1106251]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2022-05-29 05:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (101 votes). Check out past polls.

    Notices?