---
name: "Plack::Middleware::Recursive"
section: "3pm"
platform: "linux"
package: "libplack-perl"
version: "1.0051-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Plack::Middleware::Recursive"
---

# Plack::Middleware::Recursive(3pm)

Allows PSGI apps to include or forward requests recursively

## NAME

Plack::Middleware::Recursive - Allows PSGI apps to include or forward requests recursively

## SYNOPSIS

```
  # with Builder
  enable "Recursive";
  # in apps
  my $res = $env->{'plack.recursive.include'}->("/new_path");
  # Or, use exceptions
  my $app = sub {
      # ...
      Plack::Recursive::ForwardRequest->throw("/new_path");
  };
```

## DESCRIPTION

Plack::Middleware::Recursive allows PSGI applications to recursively include or forward requests to other paths. Applications can make use of callbacks stored in `"$env->{'plack.recursive.include'}"` to *include* another path to get the response (whether it's an array ref or a code ref depending on your application), or throw an exception Plack::Recursive::ForwardRequest anywhere in the code to *forward* the current request (i.e. abort the current and redo the request).

## EXCEPTIONS

This middleware passes through unknown exceptions to the outside middleware stack, so if you use this middleware with other exception handlers such as Plack::Middleware::StackTrace or Plack::Middleware::HTTPExceptions, be sure to wrap this so Plack::Middleware::Recursive gets as inner as possible.

## AUTHORS

Tatsuhiko Miyagawa

Masahiro Honma

## SEE ALSO

Plack Plack::Middleware::HTTPExceptions

The idea, code and interface are stolen from Rack::Recursive and paste.recursive.
