GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  SUB::DELETE (3)

.ds Aq ’

NAME

Sub::Delete - Perl module enabling one to delete subroutines

CONTENTS

VERSION

1.00002

SYNOPSIS



    use Sub::Delete;
    sub foo {}
    delete_sub foo;
    eval foo();1 or die; # dies



DESCRIPTION

This module provides one function, delete_sub, that deletes the subroutine whose name is passed to it. (To load the module without importing the function, write use Sub::Delete();.)

This does more than simply undefine the subroutine in the manner of undef &foo, which leaves a stub that can trigger AUTOLOAD (and, consequently, won’t work for deleting methods). The subroutine is completely obliterated from the symbol table (though there may be references to it elsewhere, including in compiled code).

PREREQUISITES

This module requires perl 5.8.3 or higher.

LIMITATIONS

If you take a reference to a glob containing a subroutine, and then delete the subroutine with delete_sub, you will find that the glob you referenced still has a subroutine in it. This is because delete_sub removes a glob, replaces it with another, and then copies the contents of the old glob into the new one, except for the CODE slot. (This is nearly impossible to fix without breaking constant::lexical.)

BUGS

If you find any bugs, please report them to the author via e-mail.

AUTHOR & COPYRIGHT

Copyright (C) 2008-10 Father Chrysostomos (sprout at, um, cpan dot org)

This program is free software; you may redistribute or modify it (or both) under the same terms as perl.

SEE ALSO

perltodo, which has delete &sub listed as a possible future feature

Symbol::Glob and Symbol::Util, both of which predate this module (but I only discovered them recently), and which allow one to delete any arbitrary slot from a glob. Neither of them takes perl 5.10 constants into account, however. They also both differ from this module, in that a subroutine referenced in compiled code can no longer be called if deleted from its glob. The entire glob must be replaced (which this module does).

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 SUB::DELETE (3) 2010-04-13

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.