Perl 变量 内部实现机制

核心模块 Devel::Peek  允许我们以C语言的角度来观察一个perl 标量。

数组的源代码定义为

struct xpvav {

char*  xav_array;  /* pointer to first array element */

SSize_t xav_fill;  /* Index of last element present */

SSize_t xav_max;    /* max index for which array has space */

IV      xof_off;    /* ptr is incremented by offset */

NV      xnv_nv;    /* numeric value, if any */

MAGIC*  xmg_magic;  /* magic for scalar array */

HV*    xmg_stash;  /* class package */

SV**    xav_alloc;  /* pointer to malloced string */

SV*    xav_arylen;

U8      xav_flags;

};

试着运行命令查看啊

C:\Users>perl  -MDevel::Peek -le "@a=(1,2,3); Dump(\@a)"

SV = IV(0x74bed0) at 0x74bed4

REFCNT = 1

FLAGS = (TEMP,ROK)

RV = 0x26cf97c

SV = PVAV(0x74cc38) at 0x26cf97c

REFCNT = 2

FLAGS = ()

ARRAY = 0x26bf5dc

FILL = 2

MAX = 3

ARYLEN = 0x0

FLAGS = (REAL)

Elt No. 0

SV = IV(0x74bda0) at 0x74bda4

REFCNT = 1

FLAGS = (IOK,pIOK)

IV = 1

Elt No. 1

SV = IV(0x74be70) at 0x74be74

REFCNT = 1

FLAGS = (IOK,pIOK)

IV = 2

Elt No. 2

SV = IV(0x74beb0) at 0x74beb4

REFCNT = 1

FLAGS = (IOK,pIOK)

IV = 3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,787评论 0 33
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,824评论 0 9
  • https://github.com/fzaninotto/FakerSkip to contentThis re...
    地狱咆哮Zzzzz阅读 6,354评论 1 0
  • 今天秋高气爽,蓝天白云飘呀飘,太阳高空暖暖照。花草树木真漂亮,开开心心去徒步。 每个周日的上午,...
    高梓朔阅读 436评论 0 3
  • 什么是青春,青春就是不美好但依旧值得纪念的日子,那些日子里,有你,有我,有我们。什么是青春,青春就是我们拼了命的想...
    傻子疯阅读 502评论 2 5