Perl Data::Util::modify_子例程为";做什么;大约是;?
我只能理解它在Perl Data::Util::modify_子例程为";做什么;大约是;?,perl,Perl,我只能理解它在之前/之后案例中的作用 它对周围的有什么作用?看起来像周围的就像之前的和之后的 从: 可选参数: before=>[子例程]在subr之前调用 around=>[子例程]围绕subr调用 after=>[子例程]在subr之后调用 根据实施情况,它似乎在做类似的事情: static SV* my_build_around_code(pTHX_ SV* code_ref, AV* const around){ I32 i; for(i = av_len(around
之前
/之后
案例中的作用
它对
周围的有什么作用?看起来像周围的就像之前的和之后的
从:
可选参数:
before=>[子例程]
在subr之前调用
around=>[子例程]
围绕subr调用
after=>[子例程]
在subr之后调用
根据实施情况,它似乎在做类似的事情:
static SV*
my_build_around_code(pTHX_ SV* code_ref, AV* const around){
I32 i;
for(i = av_len(around); i >= 0; i--){
CV* current;
MAGIC* mg;
SV* const sv = validate(*av_fetch(around, i, TRUE), T_CV);
AV* const params = newAV();
AV* const placeholders = newAV();
av_store(params, 0, newSVsv(sv)); /* base proc */
av_store(params, 1, newSVsv(code_ref)); /* first argument (next proc) */
av_store(params, 2, &PL_sv_undef); /* placeholder hole */
av_store(placeholders, 2, (SV*)PL_defgv); // *_
SvREFCNT_inc_simple_void_NN(PL_defgv);
current = newXS(NULL /* anonymous */, XS_Data__Util_curried, __FILE__);
mg = sv_magicext((SV*)current, (SV*)params, PERL_MAGIC_ext, &curried_vtbl, (const char*)placeholders, HEf_SVKEY);
SvREFCNT_dec(params); /* because: refcnt++ in sv_magicext() */
SvREFCNT_dec(placeholders); /* because: refcnt++ in sv_magicext() */
CvXSUBANY(current).any_ptr = (void*)mg;
code_ref = newRV_noinc((SV*)current);
sv_2mortal(code_ref);
}
return newSVsv(code_ref);
}
文档似乎没有暗示前后
表示之前
和之后