# PerlAppResource

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

Represents a Perl application resource.

## Definition

```csharp
namespace Aspire.Hosting.ApplicationModel;

public class PerlAppResource
    : Aspire.Hosting.ApplicationModel.ExecutableResource,
      Aspire.Hosting.ApplicationModel.IResource,
      Aspire.Hosting.ApplicationModel.IResourceWithEndpoints,
      Aspire.Hosting.IResourceWithServiceDiscovery
{
    // ...
}
```

## Remarks

This resource allows Perl applications (scripts, web servers, APIs, background services) to run as part of a distributed application. The resource manages the Perl executable, working directory, and lifecycle of the Perl application.

Perl applications can expose HTTP endpoints, communicate with other services, and participate in service discovery like other Aspire resources. They support automatic OpenTelemetry instrumentation for observability when configured with the appropriate Perl packages.

This resource supports various Perl execution environments including:

- System Perl installations
- User specified Perl environments
- Local::Lib environments

## Constructors

- [PerlAppResource(string, string, string)](/reference/api/csharp/communitytoolkit.aspire.hosting.perl/perlappresource/constructors.md#constructor-string-string-string) -- Represents a Perl application resource.

## Examples

Add a Perl web application using Mojolicious or Dancer2:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var perl = builder.AddPerlApi("api", "../perl-api", "app.pl")
    .WithHttpEndpoint(port: 5000)
    .WithArgs("--host", "0.0.0.0");

builder.AddProject<Projects.Frontend>("frontend")
    .WithReference(perl);

builder.Build().Run();
```
