开发::偷看问题

发布于 2024-11-27 12:13:15 字数 452 浏览 3 评论 0原文

% 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

23 之间被截断的部分 ( "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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

合久必婚 2024-12-04 12:13:15

一个错误? “\003”是八进制形式的 chr(3)。但是:

$ perl -Ilib -MDevel::Peek -le '$a="12345"; $a=~s/...//; Dump($a)'
SV = PVIV(0x869b0bc) at 0x86a5060
  REFCNT = 1
  FLAGS = (POK,OOK,pPOK)
  IV = 3  (OFFSET)
  PV = 0x869fac3 ( "123" . ) "45"\0
  CUR = 2
  LEN = 5

我不能复制它;你使用什么版本的 perl?

请注意,() 中的字符串缓冲区部分是保留的,但当前未使用。

A bug? "\003" is chr(3) in octal form. However:

$ perl -Ilib -MDevel::Peek -le '$a="12345"; $a=~s/...//; Dump($a)'
SV = PVIV(0x869b0bc) at 0x86a5060
  REFCNT = 1
  FLAGS = (POK,OOK,pPOK)
  IV = 3  (OFFSET)
  PV = 0x869fac3 ( "123" . ) "45"\0
  CUR = 2
  LEN = 5

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.

橘虞初梦 2024-12-04 12:13:15

我在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文