NAME B::Hooks::OP::Check::StashChange - Invoke callbacks when the stash code is being compiled in changes SYNOPSIS From Perl package Foo; use B::Hooks::OP::Check::StashChange; our $id = B::Hooks::OP::Check::StashChange::register(sub { my ($new, $old) = @_; warn "${old} -> ${new}"; }); package Bar; # "Foo -> Bar" B::Hooks::OP::Check::StashChange::unregister($Foo::id); package Moo; # callback not invoked From C/XS #include "hooks_op_check_stashchange.h" STATIC OP * my_callback (pTHX_ OP *op, char *new_stash, char *old_stash, void *user_data) { /* ... */ return op; } UV id; /* register callback */ id = hook_op_check_stashchange (cv, my_callback, NULL); /* unregister */ hook_op_check_stashchange_remove (id); DESCRIPTION Perl API register B::Hooks::OP::Check:: # or my $id = B::Hooks::OP::Check::StashChange::register(\&callback); Register "callback" when an opcode is being compiled in a different namespace than the previous one. An id that can be used for later removal of the handler using "unregister" is returned. unregister B::Hooks::OP::Check::StashChange::unregister($id); Disable the callback referenced by $id. C API TYPES OP *(*hook_op_check_stashchange_cb) (pTHX_ OP *op, const char *new_stash, const char *old_stash, void *user_data) The type the callbacks need to implement. FUNCTIONS UV hook_op_check_stashchange (hook_op_check_stashchange_cb cb, void *user_data) Register the callback "cb" to be when an opcode is compiled in a different namespace than the previous. "user_data" will be passed to the callback as the last argument. Returns an id that can be used to remove the handler using "hook_op_check_stashchange_remove". void *hook_op_check_stashchange_remove (UV id) Remove a previously registered handler referred to by "id". Returns the user data that was associated with the handler. SEE ALSO B::Hooks::OP::Check AUTHOR Florian Ragwitz <rafl@debian.org> COPYRIGHT AND LICENSE Copyright (c) 2008 Florian Ragwitz This module is free software. You may distribute this code under the same terms as Perl itself.