# PerlAppResource

- Module: [CommunityToolkit.Aspire.Hosting.Perl](/reference/api/typescript/communitytoolkit.aspire.hosting.perl.md)
- Version: `13.4.0`
- Kind: `handle`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire)

## Definition

```typescript
interface PerlAppResource
  extends IComputeResource,
    IResource,
    IResourceWithArgs,
    IResourceWithEndpoints,
    IResourceWithEnvironment,
    IResourceWithProbes,
    IResourceWithWaitSupport,
    IResourceWithServiceDiscovery {
  withCarton(): PerlAppResource;
  withCpanMinus(): PerlAppResource;
  withLocalLib(path?: string): PerlAppResource;
  withPackage(
      packageName: string,
      force?: boolean,
      skipTest?: boolean): PerlAppResource;
  withPerlbrew(
      version: string,
      perlbrewRoot?: string): PerlAppResource;
  withPerlbrewEnvironment(
      version: string,
      perlbrewRoot?: string): PerlAppResource;
  withPerlCertificateTrust(): PerlAppResource;
  withProjectDependencies(cartonDeployment?: boolean): PerlAppResource;
}
```

## Methods

- [withCarton](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withcarton.md) -- `method` -- Configures the Perl application to use Carton as its package manager. Carton manages dependencies via `cpanfile` and a lock file (`cpanfile.snapshot`), enabling reproducible builds. Use `WithProjectDependencies``1` to run `carton install` at startup.
    ```typescript
  withCarton(): PerlAppResource
  ```
- [withCpanMinus](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withcpanminus.md) -- `method` -- Configures the Perl application to use cpanm (App::cpanminus) as its package manager instead of the default cpan. Call this before `WithPackage``1` to change how packages are installed.
    ```typescript
  withCpanMinus(): PerlAppResource
  ```
- [withLocalLib](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withlocallib.md) -- `method` -- Configures the Perl application to use a local::lib directory for module isolation. Sets `PERL5LIB`, `PERL_LOCAL_LIB_ROOT`, `PERL_MM_OPT`, and `PERL_MB_OPT` environment variables so that modules are resolved from and installed into the local directory.
    ```typescript
  withLocalLib(path?: string): PerlAppResource
  ```
- [withPackage](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withpackage.md) -- `method` -- Adds a Perl package (module) to be installed before the application starts. Uses the configured package manager: cpan by default, or cpanm if `WithCpanMinus``1` was called.
    ```typescript
  withPackage(packageName: string, force?: boolean, skipTest?: boolean): PerlAppResource
  ```
- [withPerlbrew](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withperlbrew.md) -- `method` -- Configures the Perl application to use a specific perlbrew-managed Perl version.
    ```typescript
  withPerlbrew(version: string, perlbrewRoot?: string): PerlAppResource
  ```
- [withPerlbrewEnvironment](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withperlbrewenvironment.md) -- `method` -- Configures the Perl application to use a specific perlbrew-managed Perl version. This resolves the Perl executable from the perlbrew installation and updates the resource's command and environment variables so that all subsequent operations use the specified Perl version.
    ```typescript
  withPerlbrewEnvironment(version: string, perlbrewRoot?: string): PerlAppResource
  ```
- [withPerlCertificateTrust](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withperlcertificatetrust.md) -- `method` -- Configures certificate trust for the Perl application by setting SSL/TLS environment variables that common Perl HTTP libraries respect. Sets `SSL_CERT_FILE` (IO::Socket::SSL / LWP), `PERL_LWP_SSL_CA_FILE` (LWP::UserAgent), and `MOJO_CA_FILE` (Mojolicious) to the certificate bundle path provided by Aspire.
    ```typescript
  withPerlCertificateTrust(): PerlAppResource
  ```
- [withProjectDependencies](/reference/api/typescript/communitytoolkit.aspire.hosting.perl/perlappresource/withprojectdependencies.md) -- `method` -- Configures project-level dependency installation for the Perl application. Runs the appropriate install command based on the active package manager: - - If the active package manager is `cpan` (the default), it is automatically switched to `cpanm` since `cpan` does not support `--installdeps`.
    ```typescript
  withProjectDependencies(cartonDeployment?: boolean): PerlAppResource
  ```
