# PerlAppResourceBuilderExtensions

- Kind: `class`
- Package: [CommunityToolkit.Aspire.Hosting.Perl](/reference/api/csharp/communitytoolkit.aspire.hosting.perl.md)
- Version: `13.4.0`
- Namespace: `Aspire.Hosting`
- Target framework: `net10.0`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Perl/PerlAppResourceBuilderExtensions.cs)

Extension methods for adding Perl application resources to the application model.

## Definition

```csharp
namespace Aspire.Hosting;

public static class PerlAppResourceBuilderExtensions
{
    // ...
}
```

## Methods

- [AddPerlApi(IDistributedApplicationBuilder, string, string, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#addperlapi-idistributedapplicationbuilder-string-string-string) : `IResourceBuilder<PerlAppResource>` `extension` `ats export` -- Adds a Perl API server resource (e.g., Mojolicious, Dancer2) to the application model. Passes the `daemon` subcommand so HTTP frameworks start a listener.
- [AddPerlExecutable(IDistributedApplicationBuilder, string, string, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#addperlexecutable-idistributedapplicationbuilder-string-string-string) : `IResourceBuilder<PerlAppResource>` `extension` `ats export` -- Adds a Perl executable (compiled binary or PAR-packed application) to the application model. The executable is run directly rather than through the `perl` interpreter.
- [AddPerlModule(IDistributedApplicationBuilder, string, string, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#addperlmodule-idistributedapplicationbuilder-string-string-string) : `IResourceBuilder<PerlAppResource>` `extension` `ats export` -- Adds a Perl module to the application model. The module is executed using `perl -MModule::Name -e "Module::Name->run()"`.
- [AddPerlScript(IDistributedApplicationBuilder, string, string, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#addperlscript-idistributedapplicationbuilder-string-string-string) : `IResourceBuilder<PerlAppResource>` `extension` `ats export` -- Adds a Perl script resource (worker, CLI tool, background service) to the application model.
- [WithCarton(IResourceBuilder<TResource>)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withcarton-iresourcebuilder-tresource) : `IResourceBuilder<TResource>` `extension` `ats export` -- 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 [PerlAppResourceBuilderExtensions.WithProjectDependencies(IResourceBuilder<TResource>, bool)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withprojectdependencies-iresourcebuilder-tresource-bool) to run `carton install` at startup.
- [WithCpanMinus(IResourceBuilder<TResource>)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withcpanminus-iresourcebuilder-tresource) : `IResourceBuilder<TResource>` `extension` `ats export` -- Configures the Perl application to use cpanm (App::cpanminus) as its package manager instead of the default cpan. Call this before [PerlAppResourceBuilderExtensions.WithPackage(IResourceBuilder<TResource>, string, bool, bool)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withpackage-iresourcebuilder-tresource-string-bool-bool) to change how packages are installed.
- [WithLocalLib(IResourceBuilder<TResource>, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withlocallib-iresourcebuilder-tresource-string) : `IResourceBuilder<TResource>` `extension` `ats export` -- 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.
- [WithPackage(IResourceBuilder<TResource>, string, bool, bool)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withpackage-iresourcebuilder-tresource-string-bool-bool) : `IResourceBuilder<TResource>` `extension` `ats export` -- Adds a Perl package (module) to be installed before the application starts. Uses the configured package manager: cpan by default, or cpanm if [PerlAppResourceBuilderExtensions.WithCpanMinus(IResourceBuilder<TResource>)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withcpanminus-iresourcebuilder-tresource) was called.
- [WithPerlbrew(IResourceBuilder<T>, string, string?)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withperlbrew-iresourcebuilder-t-string-string) : `IResourceBuilder<T>` `extension` `ats export` -- Configures the Perl application to use a specific perlbrew-managed Perl version.
- [WithPerlbrewEnvironment(IResourceBuilder<T>, string, string?)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withperlbrewenvironment-iresourcebuilder-t-string-string) : `IResourceBuilder<T>` `extension` `ats export` -- 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.
- [WithPerlCertificateTrust(IResourceBuilder<TResource>)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withperlcertificatetrust-iresourcebuilder-tresource) : `IResourceBuilder<TResource>` `extension` `experimental` `ats export` -- 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.
- [WithProjectDependencies(IResourceBuilder<TResource>, bool)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresourcebuilderextensions/methods.md#withprojectdependencies-iresourcebuilder-tresource-bool) : `IResourceBuilder<TResource>` `extension` `ats export` -- Configures project-level dependency installation for the Perl application. Runs the appropriate install command based on the active package manager: - cpanm: `cpanm --installdeps --notest .` - carton: `carton install [--deployment]` If the active package manager is `cpan` (the default), it is automatically switched to `cpanm` since `cpan` does not support `--installdeps`.
