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. | [reply] [d/l] |
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"?
| [reply] |
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)
| [reply] [d/l] |
$ perl -le " print 041 "
33
$ perl -le " print chr 041 "
!
$ perl -le " print chr 33 "
!
$ perl -le " print ord q{!} "
33
So the integer 33 is written in octal as 041, and if you chr 33 you get !
Make sense?
In a double quoted string 041 is 041, but \041 is chr 33 (octal escape) $ perl -le " print qq{041} "
041
$ perl -le " print qq{\041} "
!
| [reply] [d/l] [select] |