123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- magic cases might need to be treated specially and testcases are quite hard to produce.
- sv_magic()
- ----------
- av.c
- av_store()
- Storing a non-undef element into an SMAGICAL array, av,
- assigns the equivalent lowercase form of magic (of the first
- MAGIC in the chain) to the value (with obj = av, name = 0 and
- namlen = array index).
- gv.c
- gv_init()
- Initialising gv assigns '*' magic to it with obj = gv, name =
- GvNAME and namlen = GvNAMELEN.
- gv_fetchpv()
- @ISA gets 'I' magic with obj = gv, zero name and namlen.
- %OVERLOAD gets 'A' magic with obj = gv, zero name and namlen.
- $1 to $9, $&, $`, $', $+ get '\0' magic with obj = gv,
- name = GvNAME and namlen = len ( = 1 presumably).
- Gv_AMupdate()
- Stashes for overload magic seem to get 'c' magic with obj = 0,
- name = &amt and namlen = sizeof(amt).
- hv_magic(hv, gv, how)
- Gives magic how to hv with obj = gv and zero name and namlen.
- mg.c
- mg_copy(sv, nsv, key, klen)
- Traverses the magic chain of sv. Upper case forms of magic
- (only) are copied across to nsv, preserving obj but using
- name = key and namlen = klen.
- magic_setpos()
- LvTARG of a PVLV gets 'g' magic with obj = name = 0 and namlen = pos.
- op.c
- mod()
- PVLV operators give magic to their targs with
- obj = name = namlen = 0. OP_POS gives '.', OP_VEC gives 'v'
- and OP_SUBSTR gives 'x'.
- perl.c
- magicname(sym, name, namlen)
- Fetches/creates a GV with name sym and gives it '\0' magic
- with obj = gv, name and namlen as passed.
- init_postdump_symbols()
- Elements of the environment get given SVs with 'e' magic.
- obj = sv and name and namlen point to the actual string
- within env.
- pp.c
- pp_av2arylen()
- $#foo gives '#' magic to the new SV with obj = av and
- name = namlen = 0.
- pp_study()
- SV gets 'g' magic with obj = name = namlen = 0.
- pp_substr()
- PVLV gets 'x' magic with obj = name = namlen = 0.
- pp_vec()
- PVLV gets 'x' magic with obj = name = namlen = 0.
- pp_hot.c
- pp_match()
- m//g gets 'g' magic with obj = name = namlen = 0.
- pp_sys.c
- pp_tie()
- sv gets magic with obj = sv and name = namlen = 0.
- If an HV or an AV, it gets 'P' magic, otherwise 'q' magic.
- pp_dbmopen()
- 'P' magic for the HV just as with pp_tie().
- pp_sysread()
- If tainting, the buffer SV gets 't' magic with
- obj = name = namlen = 0.
- sv.c
- ref loops:
- For certain magics the sv == obj - a "magic reference loop":
- arylen, symtab, tiedscalar, .... There the obj refcount is
- not incremented.
- sv_setsv()
- Doing sv_setsv(dstr, gv) gives '*' magic to dstr with
- obj = dstr, name = GvNAME, namlen = GvNAMELEN.
- sv_setsv_flags()
- Set vstring on SvVSTRING_mg (RMAGIC)
- sv_rvweaken()
- tiedscalar weakens the RV obj to the PVIO. Sets a backref magic
- to the referred SV.
- util.c
- fbm_compile()
- The PVBM gets 'B' magic with obj = name = namlen = 0 and SvVALID
- is set to indicate that the Boyer-Moore table is valid.
- magic_setbm() just clears the SvVALID flag.
- hv_magic()
- ----------
- gv.c
- gv_fetchfile()
- With perldb, the HV of a gvfile gv gets 'L' magic with obj = gv.
- gv_fetchpv()
- %SIG gets 'S' magic with obj = siggv.
- init_postdump_symbols()
- %ENV gets 'E' magic with obj = envgv.
|