```{index} single: autodie::Scope::GuardStack (pragma) ``` # autodie::Scope::GuardStack Hook stack for managing scopes via %^H ## SYNOPSIS ```perl use autodie::Scope::GuardStack; my $stack = autodie::Scope::GuardStack->new $^H{'my-key'} = $stack; $stack->push_hook(sub {}); ``` ## DESCRIPTION This class is a stack of hooks to be called in the right order as scopes go away. The stack is only useful when inserted into `%^H` and will pop hooks as their "scope" is popped. This is useful for uninstalling or reinstalling subs in a namespace as a pragma goes out of scope. Due to how `%^H` works, this class is only useful during the compilation phase of a perl module and relies on the internals of how perl handles references in `%^H`. This module is not a part of autodie's public API. ### Methods #### new ```perl my $stack = autodie::Scope::GuardStack->new; ``` Creates a new `autodie::Scope::GuardStack`. The stack is initially empty and must be inserted into `%^H` by the creator. #### push\_hook ```perl $stack->push_hook(sub {}); ``` Add a sub to the stack. The sub will be called once the current compile-time "scope" is left. Multiple hooks can be added per scope ## AUTHOR Copyright 2013, Niels Thykier ## LICENSE This module is free software. You may distribute it under the same terms as Perl itself.