---
name: "Apache::Singleton"
section: "3pm"
platform: "linux"
package: "libapache-singleton-perl"
version: "0.17-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Apache::Singleton"
---

# Apache::Singleton(3pm)

Singleton class for mod\_perl

## NAME

Apache::Singleton - Singleton class for mod\_perl

## VERSION

version 0.17

## SYNOPSIS

```
  package Printer;
  # default:
  #   Request for mod_perl env
  #   Process for non-mod_perl env
  use base qw(Apache::Singleton);
  package Printer::PerRequest;
  use base qw(Apache::Singleton::Request);
  package Printer::PerProcess;
  use base qw(Apache::Singleton::Process);
```

## DESCRIPTION

Apache::Singleton works the same as Class::Singleton, but with various object lifetime (**scope**). See Class::Singleton first.

## OBJECT LIFETIME

By inheriting one of the following sublasses of Apache::Singleton, you can change the scope of your object.

- Request

  ```
    use base qw(Apache::Singleton::Request);
  ```

  One instance for one request. Apache::Singleton will remove instance on each request. Implemented using mod\_perl `"pnotes"` API. In mod\_perl environment (where `$ENV{MOD_PERL}` is defined), this is the default scope, so inheriting from Apache::Singleton would do the same effect.

  **NOTE**: You need `"PerlOptions +GlobalRequest"` in your apache configuration in order to use the *Request* lifetime method.

- Process

  ```
    use base qw(Apache::Singleton::Process);
  ```

  One instance for one httpd process. Implemented using package global. In non-mod\_perl environment, this is the default scope, and you may notice this is the same beaviour with Class::Singleton ;)

  So you can use this module safely under non-mod\_perl environment.

## CREDITS

Original idea by Matt Sergeant \<matt@sergeant.org\> and Perrin Harkins \<perrin@elem.com\>.

Initial implementation and versions 0.01 to 0.07 by Tatsuhiko Miyagawa \<miyagawa@bulknews.net\>.

## SEE ALSO

Apache::Singleton::Request, Apache::Singleton::Process, Class::Singleton

## SOURCE

The development version is on github at \<https://github.com/mschout/apache-singleton\> and may be cloned from \<git://github.com/mschout/apache-singleton.git\>

## BUGS

Please report any bugs or feature requests to bug-apache-singleton@rt.cpan.org or through the web interface at:\
  http://rt.cpan.org/Public/Dist/Display.html?Name=Apache-Singleton

## AUTHOR

Michael Schout \<mschout@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2009 by Michael Schout.

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