# autodie::Scope::GuardStack - phpMan

## NAME
    [autodie::Scope::GuardStack] - Hook stack for managing scopes via %^H

## SYNOPSIS
        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
      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
      $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 <<niels@thykier.net>>

## LICENSE
    This module is free software. You may distribute it under the same terms
    as Perl itself.

