开发::偷看问题
% perl -Ilib -MDevel::Peek -le '$a="34567"; $a=~s/...//; Dump($a)'
SV = PV(0x8171048) at 0x8186f48 # replaced "12345" with "34567"
REFCNT = 1
FLAGS = (POK,OOK,pPOK)
OFFSET = 3
PV = 0x8181bdb ( "34\003" . ) "67"\0
CUR = 2
LEN = 9
2
和 3
之间被截断的部分 ( "12\003" . )
中的 2 个零来自哪里?
为什么我会在 chomped 部分 ( "34\003" . )
中得到这种输出?
% perl -Ilib -MDevel::Peek -le '$a="34567"; $a=~s/...//; Dump($a)'
SV = PV(0x8171048) at 0x8186f48 # replaced "12345" with "34567"
REFCNT = 1
FLAGS = (POK,OOK,pPOK)
OFFSET = 3
PV = 0x8181bdb ( "34\003" . ) "67"\0
CUR = 2
LEN = 9
Where do the 2 zeros in the chomped part ( "12\003" . )
between 2
and 3
come from?
Why do I get this kind of output in the chomped part ( "34\003" . )
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一个错误? “\003”是八进制形式的 chr(3)。但是:
我不能复制它;你使用什么版本的 perl?
请注意,() 中的字符串缓冲区部分是保留的,但当前未使用。
A bug? "\003" is chr(3) in octal form. However:
I can't duplicate that; what version of perl are you using?
Note that the part of the string buffer in () is reserved but not currently in use.
我在 Windows 上使用 perl 5.12.2 得到与 sid_com 相同的结果。然而,字符串长度无论如何都是从结构的
CUR
字段中获取的。我不明白为什么这应该是一个错误,字符串缓冲区的其余部分可能有任何字节。I am getting same result as sid_com using perl 5.12.2 on Windows. However the string length is taken from
CUR
field of structure anyway. I don't see why this should be a bug, there can be any bytes in rest of string buffer.