You're running into the helpful inclination of Perl to freely interconvert strings and numbers in situations where it seems to make sense (and even sometimes where it doesn't). As | Similarly to what choroba said, what do you think substr '123456', 0, 1 is?
c:\@Work\Perl\monks>perl -wMstrict -le "use Data::Dump qw(dd); ;; my $string = pack('a*', '123456'); dd $string; ;; print substr $string, 0, 1; printf qq{%02x \n}, substr $string, 0, 1; printf qq{%02x \n}, '1'; ;; foreach my $c (unpack 'C*', $string) { printf '%02x ', $c; } print ''; ;; $string .= qq{\x1c}; dd $string; ;; foreach my $c (unpack 'C*', $string) { printf '%02x ', $c; } " 123456 1 01 01 31 32 33 34 35 36 "123456\34" 31 32 33 34 35 36 1c
Update: Finally noticed that choroba didn't actually say anything about substr, but rather about pack. Still, I think the question about substr is valid.
In reply to Re: concatenate a non-printable character onto an ascii string and inspect the content
by AnomalousMonk
in thread concatenate a non-printable character onto an ascii string and inspect the content
by holandes777
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |