Perl 變量 內(nèi)部實(shí)現(xiàn)機(jī)制

核心模塊 Devel::Peek ?允許我們以C語言的角度來觀察一個(gè)perl 標(biāo)量。

數(shù)組的源代碼定義為

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;

};

試著運(yùn)行命令查看啊

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,776評(píng)論 0 33
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,789評(píng)論 0 9
  • https://github.com/fzaninotto/FakerSkip to contentThis re...
    地獄咆哮Zzzzz閱讀 6,353評(píng)論 1 0
  • 今天秋高氣爽,藍(lán)天白云飄呀飄,太陽高空暖暖照。花草樹木真漂亮,開開心心去徒步。 每個(gè)周日的上午,...
    高梓朔閱讀 433評(píng)論 0 3
  • 什么是青春,青春就是不美好但依舊值得紀(jì)念的日子,那些日子里,有你,有我,有我們。什么是青春,青春就是我們拼了命的想...
    傻子瘋閱讀 502評(píng)論 2 5