---
name: "ExtUtils::Builder::Plan"
section: "3pm"
platform: "linux"
package: "libextutils-builder-perl"
version: "0.017-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ExtUtils::Builder::Plan"
---

# ExtUtils::Builder::Plan(3pm)

An ExtUtils::Builder Plan

## NAME

ExtUtils::Builder::Plan - An ExtUtils::Builder Plan

## VERSION

version 0.017

## SYNOPSIS

```
 package Frobnicate;
 sub plan {
     my %nodes = ...;
     return ExtUtils::Builder::Plan->new(
         nodes => \%nodes,
     );
 }
 my $plan = Frobnicate->plan(@args);

 # various consumption methods
 $plan->run('foo');
 say $_->target for $plan->nodes;
```

## DESCRIPTION

An object of this class describes a process. It contains one or more nodes. This is enough to describe whole building processes, in fact its `"run"` method is a tiny `"make"` engine.

## ATTRIBUTES

### nodes

This is the set of all nodes in this plan.

## METHODS

### run($target, %options)

This runs the process. Similar to `"make"`, it checks for each node if it is necessary to run, and if not skips it. `$target` may either be a single string or an array ref of strings for the targets to run.

### node($target)

Returns the node for the specified `$target`.

### node\_names()

Returns the names of all the nodes.

### merge($other)

This merges this plan with another, and returns the new plan. Each entry may only exist on one side of the merge.

### phonies()

This returns the names of all phony targets.

## AUTHOR

Leon Timmermans \<fawaka@gmail.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
