---
name: "Catalyst::Middleware::Stash"
section: "3pm"
platform: "linux"
package: "libcatalyst-perl"
version: "5.90132-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::Middleware::Stash"
---

# Catalyst::Middleware::Stash(3pm)

The Catalyst stash - in middleware

## NAME

Catalyst::Middleware::Stash - The Catalyst stash - in middleware

## DESCRIPTION

We've moved the Catalyst stash to middleware.  Please don't use this directly since it is likely to move off the Catalyst namespace into a stand alone distribution

We store a coderef under the `"PSGI_KEY"` which can be dereferenced with key values or nothing to access the underlying hashref.

Anything placed into the stash will be available in the stash of any 'mounted' Catalyst applications.  A mounted Catalyst application may set the stash and 'pass back' information to the parent application.  Non Catalyst applications may use this middleware to access and set stash values.

Please note I highly recommend having a stronger interface than a stash key between applications.

For more information the current test case t/middleware-stash.t is the best documentation.

## SUBROUTINES

This class defines the following subroutines.

### PSGI\_KEY

Returns the hash key where we store the stash.  You should not assume the string value here will never change!  Also, its better to use "get\_stash" or "stash".

### get\_stash

Expect: `$psgi_env`.

Exportable subroutine.

Get the stash out of the `$env`.

### stash

Expects: An object that does `"env"` and arguments

Exportable subroutine.

Given an object with a method `"env"` get or set stash values, either as a method or via hashref modification.  This stash is automatically reset for each request (it is not persistent or shared across connected clients.  Stash key / value are stored in memory.

```
    use Plack::Request;
    use Catalyst::Middleware::Stash 'stash';
    my $app = sub {
      my $env = shift;
      my $req = Plack::Request->new($env);
      my $stashed = $req->stash->{in_the_stash};  # Assume the stash was previously populated.
      return [200, ['Content-Type' => 'text/plain'],
        ["I found $stashed in the stash!"]];
    };
```

If the stash does not yet exist, an exception is thrown.

## METHODS

This class defines the following methods.

### call

Used by plack to call the middleware
