I don't think so, but here's one:
The items in perlfunc are actually operators. Overriding of these named operators is handled by the parser, not by the overridden operator. When the parser encounters a named operator such as time it normally places an invocation of the operator in the opcode tree.
$ perl -MO=Concise,-exec -e'time()'
1 <0> enter
2 <;> nextstate(main 1 -e:1) v
3 <0> time[t1] v <-- time operator
4 <@> leave[1 ref] vKP/REFC
-e syntax OK
But when the operator has been overloaded, it places a subroutine invocation in the opcode tree instead.
$ perl -MO=Concise,-exec -e'BEGIN { *CORE::GLOBAL::time = sub {} } tim
+e()'
1 <0> enter
2 <;> nextstate(main 3 -e:1) v
3 <0> pushmark s
4 <#> gv[*CORE::GLOBAL::time] s <-- sub name
5 <1> entersub[t2] vKS/TARG,1 <-- sub invocation
6 <@> leave[1 ref] vKP/REFC
-e syntax OK
The same goes when overriding a named operator locally.
$ perl -MO=Concise,-exec -e'use subs qw( time ); time()'
1 <0> enter
2 <;> nextstate(main 12 -e:1) v
3 <0> pushmark s
4 <#> gv[*time] s <-- sub name
5 <1> entersub[t2] vKS/TARG,1 <-- sub invocation
6 <@> leave[1 ref] vKP/REFC
-e syntax OK
Re^2: Where does time come from? CORE::GLOBAL:time no honored. (order) has an example.
|