warn $]; warn \&CORE::GLOBAL::sleep; warn \&CORE::sleep; &CORE::GLOBAL::sleep(3);
5.016003 at d:/Users/lanx/pm/core_sleep.pl line 1. CODE(0x328420) at d:/Users/lanx/pm/core_sleep.pl line 4. CODE(0x349718) at d:/Users/lanx/pm/core_sleep.pl line 5. <-- differen +t! Undefined subroutine &CORE::GLOBAL::sleep called at d:/Users/lanx/pm/c +ore_sleep.pl line 7.
You are trying to build a wrapper around an non-existent function.
You haven't told us which version you use, but I doubt that CORE::GLOBAL:: is populated by default.
What you originally tried, something like:
*old = *CORE::GLOBAL::sleep
is aliasing the two symbols (two symbols pointing to the same typeglob)
But after populating the code slot with *CORE::GLOBAL::sleep = sub{} both will point to the same sub.
*old = *CORE::GLOBAL::sleep; *CORE::GLOBAL::sleep = sub { warn " **** beware of morons **** "}; &old(); # oops warn \&CORE::GLOBAL::sleep; warn \&old;
**** beware of morons **** at d:/Users/lanx/pm/core_sleep.pl line 2. CODE(0x4c9478) at d:/Users/lanx/pm/core_sleep.pl line 7. CODE(0x4c9478) at d:/Users/lanx/pm/core_sleep.pl line 8. <-- identical +!
That's why you get a circular call!
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
same with 5.18 on linux
lanx@ubuntu14-large:~$ perl warn $]; warn \&CORE::GLOBAL::sleep; warn \&CORE::sleep; &CORE::GLOBAL::sleep(3); __END__ 5.018002 at - line 1. CODE(0x1804cb8) at - line 2. CODE(0x1830398) at - line 3. Undefined subroutine &CORE::GLOBAL::sleep called at - line 4.
lanx@ubuntu14-large:~$ perl *old = *CORE::GLOBAL::sleep; *CORE::GLOBAL::sleep = sub { warn " **** beware of morons **** "}; &old(); # oops warn \&CORE::GLOBAL::sleep; warn \&old; __END__ **** beware of morons **** at - line 2. CODE(0x2089448) at - line 5. CODE(0x2089448) at - line 6.
In reply to Re^5: Copy a builtin sub to a different name and then override
by LanX
in thread Copy a builtin sub to a different name and then override
by bliako
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |