perl源代码中定义的`use`在哪里?

时间:2017-10-20 17:46:47

标签: perl internals

有没有人知道源中的确切位置和编译阶段use的定义?我没有看到它寻找CORE::GLOBAL::use,我不确定如何潜水寻找它。这是一个非常模糊的术语。

2 个答案:

答案 0 :(得分:7)

use语法在解析器(perly.y)中定义。摘录:

|   USE startsub
        { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
    BAREWORD BAREWORD optlistexpr ';'
        {
          SvREFCNT_inc_simple_void(PL_compcv);
          utilize($1, $2, $4, $5, $6);
          parser->parsed_sub = 1;
          $$ = NULL;
        }

不知道yacc,我不知道那是做什么的。

来自utilize()的{​​{1}}函数为Perl_utilize()。此代码创建一个包含op.c的BEGIN块。 requireveop变量可能包含用于检查版本或导入所请求元素的操作码:

imop

链接到Github镜像上的v5.26.0源代码:

答案 1 :(得分:-1)

它在CORE

perl -w -E 'CORE::use Data::Dumper; print Dumper("a")'