NAME

Sub::Mutate - examination and modification of subroutines

SYNOPSIS

use Sub::Metadata qw(
	sub_body_type
	sub_closure_role
	sub_is_lvalue
	sub_is_constant
	sub_is_method mutate_sub_is_method
	sub_is_debuggable mutate_sub_is_debuggable
	sub_prototype mutate_sub_prototype
);

$type = sub_body_type($sub);
$type = sub_closure_role($sub);
if(sub_is_lvalue($sub)) { ...
if(sub_is_constant($sub)) { ...
if(sub_is_method($sub)) { ...
mutate_sub_is_method($sub, 1);
if(sub_is_debuggable($sub)) { ...
mutate_sub_is_debuggable($sub, 0);
$proto = sub_prototype($sub);
mutate_sub_prototype($sub, $proto);

use Sub::WhenBodied qw(when_sub_bodied);

when_sub_bodied($sub, sub { mutate_sub_foo($_[0], ...) });

DESCRIPTION

This module is a backward-compatibility wrapper repackaging functions that are now supplied by other modules. It is deprecated to use this module: you should instead get the functions directly from Sub::Metadata or Sub::WhenBodied as appropriate.

FUNCTIONS

sub_body_type(SUB)
sub_closure_role(SUB)
sub_is_lvalue(SUB)
sub_is_constant(SUB)
sub_is_method(SUB)
mutate_sub_is_method(SUB, NEW_METHODNESS)
sub_is_debuggable(SUB)
mutate_sub_is_debuggable(SUB, NEW_DEBUGGABILITY)
sub_prototype(SUB)
mutate_sub_prototype(SUB, NEW_PROTOTYPE)

These functions are supplied by Sub::Metadata. You should use that module directly. See that module for documentation.

when_sub_bodied(SUB, ACTION)

This function is supplied by Sub::WhenBodied. You should use that module directly. See that module for documentation.

SEE ALSO

Sub::Metadata, Sub::WhenBodied

AUTHOR

Andrew Main (Zefram) <zefram@fysh.org>

COPYRIGHT

Copyright (C) 2009, 2010, 2011, 2013, 2015 Andrew Main (Zefram) <zefram@fysh.org>

LICENSE

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.