---
name: "Env::Sanctify"
section: "3pm"
platform: "linux"
package: "libenv-sanctify-perl"
version: "1.12-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Env::Sanctify"
---

# Env::Sanctify(3pm)

Lexically scoped sanctification of %ENV

## NAME

Env::Sanctify - Lexically scoped sanctification of %ENV

## VERSION

version 1.12

## SYNOPSIS

```
  my $sanctify = Env::Sanctify->sanctify( sanctify => [ '^POE' ] );
  # do some stuff, fork some processes etc.
  $sanctify->restore
  {
    my $sanctify = Env::Sanctify->sanctify( env => { POE_TRACE_DEFAULT => 1 } );
    # do some stuff, fork some processes etc.
  }
  # out of scope, %ENV is back to normal
```

## DESCRIPTION

Env::Sanctify is a module that provides lexically scoped manipulation and sanctification of `%ENV`.

You can specify that it alter or add additional environment variables or remove existing ones according to a list of matching regexen.

You can then either `"restore"` the environment back manually or let the object fall out of scope, which automagically restores.

Useful for manipulating the environment that forked processes and sub-processes will inherit.

## CONSTRUCTOR

- "sanctify"

  Creates an Env::Sanctify object. Takes two optional arguments:

  ```
    'env', a hashref of env vars to add to %ENV;
    'sanctify', an arrayref of regex pattern strings to match against current %ENV vars;
  ```

  Any `%ENV` var that matches a `"sanctify"` regex is removed from the resultant `%ENV`.

## METHODs

- "restore"

  Explicitly restore the previous `%ENV`. This is called automagically when the object is `"DESTROY"`ed, for instance, when it goes out of scope.

## CAVEATS

It has been reported that redefining the Env::Sanctify object causes unexpected behaviour.

```
  use strict;
  use warnings;
  use Env::Sanctify;
  $ENV{TEST} = 'Test thing';
  my $sanctify = Env::Sanctify->sanctify( sanctify => [ 'TEST' ] );
  printf "My ENV{TEST}: %s\n", $ENV{TEST};
  $sanctify = Env::Sanctify->sanctify( env => { TEST => 'Other answer' } );
  printf "My ENV{TEST}: %s\n", $ENV{TEST};
```

This script outputs:

```
  My ENV{TEST}:
  My ENV{TEST}: Test thing
```

## AUTHOR

Chris Williams \<chris@bingosnet.co.uk\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Chris Williams.

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