Author image james h. woodyatt


cast - The command line utility for Perl Conjury


cast [option] ... spell ...


The cast utility is the command line interface for Perl Conjury, a general purpose software construction framework.

It's really just a very short Perl script. This is deliberate-- so that the need to change it will arise rarely if ever. In this way, the opportunity for version skew introduced by cast itself is minimized.

All of the heavy lifting is actually done in the Conjury::Core module-- which is either installed in your Perl site library, or located in a Conjury directory at the top of your source file hierarchy.

The Conjury directory is located by searching the current working directory first, then its parent directory, then its parent, and so on, until it reaches the root of the current working directory.

Once it finds what it assumes is the top of the source file hierarchy and loads the Conjury::Core module, it calls the Conjury::Core::execute subroutine with two arguments: the top directory and the current working directory.

If you using a variant of the core module from the distribution, then the rules for constructing software are called 'spells' and they are defined in files named '', which are just Perl language files that use the modules in the 'Conjury' namespace, as well as modules elsewhere in the Perl library.


Since the arguments to cast are actually parsed in the Conjury::Core module, the set of options understood by the command line utility is completely extensible-- the options below are the ones implemented by the version provided in the distribution.


Explains the internal reasons for what is going on at every step.


Invokes the actions associated with each spell regardless of whether the associated products are out of date. This has the effect of "forcing a recompile" of the products.


Prints a description of the actions invoked for each spell instead of actually performing them. This has the effect of "showing what will happen" in a non-destructive manner.


Reverses the actions and the order in which they are performed. With most spells, the action is to produce an output file, so the reverse of the action is typically to remove all the products of construction associated with the spells cast, i.e. the final and intermediate products.

--define <key>
--define <key>=<value>

Assigns a value for the named key in an associative array that is available to spell definitions. Values defined this way are not propagated to subprocesses. (Use environment variables and %ENV for that purpose instead.)

If the value is not specified, then the integer value '1' is used by default.


The Conjury::Core module provided with the distribution expects a source file named to contain Perl code that defines the "spells" associated with constructing software products from the associated source files.


More documentation is in Conjury, Conjury::Core and, of course, Perl.


James Woodyatt <>