Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^5: Copy a builtin sub to a different name and then override (exists)

by LanX (Saint)
on Jun 02, 2018 at 15:40 UTC ( [id://1215743]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Copy a builtin sub to a different name and then override
in thread Copy a builtin sub to a different name and then override

> even if the original suggestion wasn't on point

Actually the first approach works and is saner if CORE::GLOBAL::sleep() already exists.

If you can't be sure if someone else already overrode the builtin you should wrap around the wrapper (which might already wrap around another wrapper and so on).

OK, granted: In the case of builtins that's a very wide interpretation of "sane", but this technique can be useful with any kind of wrapper (like $SIG{"__DIE__"} et al)

The problem here is to know if a real sub-ref already "exists", and - surprise - exists does the trick

use strict; use warnings; warn "Doesn't Exist!" unless exists &CORE::GLOBAL::sleep; *CORE::GLOBAL::sleep =sub {42}; warn "Exists!" if exists &CORE::GLOBAL::sleep;
Doesn't Exist! at d:/Users/lanx/pm/core_sleep.pl line 4. Exists! at d:/Users/lanx/pm/core_sleep.pl line 6.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

update

using defined is even "saner".

see Re^3: Copy a builtin sub to a different name and then override

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1215743]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (2)
As of 2024-04-26 02:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found