The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

stubby - commandline tool for dumping stub Perl programs sequentialized using Sub::Genius.

SYNOPSIS

Generate code that is dependent on Sub::Genius:

Example redirects to a file, ./spawn-combine.pl

    $ stubby init --run once -p "can bejust a list of subroutines" > ./spawn-combine.pl

Generate code that is not dependent on Sub::Genius:

Example redirects to a file, ./spawn-combine.pl

    $ stubby init --run nodeps -p "init ( subA & subB ) middle ( subA & suB ) fin" > ./spawn-combine.pl

Note: while this necessarily causes a PRE to be cached, the code generated also doesn't use Sub::Genius ();, so the caching effect on this subcommand is only as useful for making this command faster. See precache subcommand below for a more useful approach for caching.

Pre-cache PREs (may be reasonably called, a compile step):

precache outputs the absolute path to the cache file on completion.

    $ CACHEFILE=$(stubby precache -p "init (subA & subB ) middle (subC & subD) fin")
    $ echo Cache file is ${CACHEFILE}

    $ CACHEFILE=$(stubby precache -f ./my-preplan.preplan -d put/in/here)
    $ echo Cache file is ${CACHEFILE}

Note: ./my-preplan.preplan should generate the same checksum (and cache) as the PRE specified using -p in the first example.

    init
      (subA & subB )
    middle
      (subC & subD)
    fin

Sub::Genius tries very hard to generate a consistent representation of the PREs, basically by minifying them.

DESCRIPTION

General commandline tool for doing usefuly things while developing or distributing applications that use Sub::Genius.

export - dumps the minimized DFA resulting from the PRE in GraphViz's dot format. Useful with programs such as xdot, which is a viewer; in addition to the rendering programs provided by GraphViz, such as dot, circo, etc.

init - generates boilerplate Perl to help start a script, module, or project that is using Sub::Genius.

list - enumerates all valid strings accepted by the PRE that is provided; this is useful for verifying all of the orderings in which the PRE describes the serialized execution plan.

precache - provides a compiler-like tool for precaching PREs that Sub::Genius is able to use natively for skipping the potentially expensive step of convering a PRE (preplan) to a DFA (the thing FLAT uses to generate valid (i.e., sequentially consistent) execution plans.

OPTIONS FOR SUBCOMMAND export

-f|--prefile path/to/PRE.preplan

Specify the PRE from a file. Mutually exclusive with -p|--preplan.

-p|--preplan PRE

An the actual PRE that is to be cached. Mutually exclusive with -f|--prefile, which can be used to specify a PRE in a text file.

OPTIONS FOR SUBCOMMAND init

The init subcommand does not convert a PRE to a DFA, it simply takes a space delimited list of subroutine names, that are then used to generate minimal subroutine stubs. It is then a starting point for the developer of the code to manually edit the PRE (contained as a scalar string, $preplan) and implement the bodies of the subroutines.

-x|--run

Choose invocation method to use in the code. The default is once.

Options include:

once - generates code that invokes Sub::Genius::run_once.

any - generates code that invokes Sub::Genius::run_any.

all - generates code that invokes Sub::Genius::run_once, in a do { ... } while () loop.

nodeps - generates code that is free of any dependencies, including Sub::Genius.

-p|--preplan

An actual PRE, when used with -x|--run [ once | any | all ], the subroutine names are stripped and used, but the PRE is not converted to a DFA.

when used with -x|--run nodeps, the PRE is necessarily generates subroutine calls that must necessarily be sequentially consistent.

-f|--prefile

Specify the PRE from a file. Mutually exclusive with -p|--preplan.

OPTIONS FOR SUBCOMMAND list

-f|--prefile path/to/PRE.preplan

Specify the PRE from a file. Mutually exclusive with -p|--preplan.

-p|--preplan PRE

An the actual PRE that is to be cached. Mutually exclusive with -f|--prefile, which can be used to specify a PRE in a text file.

OPTIONS FOR SUBCOMMAND precache

Effectively compiles a PRE using Sub::Genius's caching feature. As long as PREs that produced the same checksum by Sub::Genius and the cachedir is the same, this allows one to prepare and distribute any number of pre-compiled DFAs. For sufficiently large or highly shuffled PREs, this can be leveraged to virtually eliminate the overhead associated with using Sub::Genius in deployed code..

-d|--cachedir path/to/cachedir

Specifies the cachedir to use for saving the cached DFAs. See Sub::Genius for more information about caching. This option is passed to the cachedir parameter of the constructor.

-f|--prefile path/to/PRE.preplan

Specify the PRE from a file. Mutually exclusive with -p|--preplan.

-p|--preplan PRE

An the actual PRE that is to be cached. Mutually exclusive with -f|--prefile, which can be used to specify a PRE in a text file.

--force

Forces re-caching of previously cached DFAs, or at least for those matching the checksum and are located in the same cachedir.

SEE ALSO

Sub::Genius

BUGS

Probably

COPYRIGHT AND LICENSE

perl5

AUTHOR

OODLER 577 <oodler@cpan.org>