- NAME
- Synopsis
- Description
- API
  - special_list_call
  - special_list_clear
  - special_list_register
- See Also
- Copyright
- Authors

# NAME

ModPerl::Global -- Perl API for manipulating special Perl lists

# Synopsis

     use ModPerl::Global ();
     my $package = 'MyApache2::Package';

     # make the END blocks of this package special
     ModPerl::Global::special_list_register(END => $package);

     # Execute all encoutered END blocks from this package now
     ModPerl::Global::special_list_call(    END => $package);

     # delete the list of END blocks
     ModPerl::Global::special_list_clear(   END => $package);

# Description

`ModPerl::Global` provides an API to manipulate special perl lists. At the moment only the `END` blocks list is supported.

This API allows you to change the normal Perl behavior, and execute special lists when you need to.

For example `ModPerl::RegistryCooker` uses it to run `END` blocks in the scripts at the end of each request.

Before loading a module containing package `$package`, you need to register it, so the special blocks will be intercepted by mod_perl and not given to Perl. `special_list_register` does that. Later on when you want to execute the special blocks, `special_list_call` should be called. Unless you want to call the list more than once, clear the list with `special_list_clear`.

# API

`ModPerl::Global` provides the following methods:

## `special_list_call`

Call the special list

    $ok = special_list_call($key => $package);

arg1: `$key` ( string )

  The name of the special list. At the moment only `'END'` is supported.

arg2: `$package` ( string )

  what package to special list is for

ret: `$ok` ( boolean )

  true value if `$key` is known, false otherwise.

since: 2.0.00

## `special_list_clear`

Clear the special list

    $ok = special_list_clear($key => $package);

arg1: `$key` ( string )

  The name of the special list. At the moment only `'END'` is supported.

arg2: `$package` ( string )

  what package to special list is for

ret: `$ok` ( boolean )

  true value if `$key` is known, false otherwise.

since: 2.0.00

## `special_list_register`

Register the special list

    $ok = special_list_call($key => $package);

arg1: `$key` ( string )

  The name of the special list. At the moment only `'END'` is supported.

arg2: `$package` ( string )

  what package to special list is for

ret: `$ok` ( boolean )

  true value if `$key` is known, false otherwise.

since: 2.0.00

Notice that you need to register the package before it is loaded. If you register it after, Perl has already compiled the `END` blocks and there are no longer under your control.

# See Also

mod_perl 2.0 documentation.

# Copyright

mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.

# Authors

The mod_perl development team and numerous contributors.