Zoidberg::Contractor(3p)

NAME
Zoidberg::Contractor - Module to manage jobs

SYNOPSIS
        use Zoidberg::Contractor;
        my $c = Zoidberg::Contractor->new();

        $c->shell_list( [qw(cat ./log)], '|', [qw(grep -i error)] );

DESCRIPTION
Zoidberg inherits from this module, it manages jobs.

It uses Zoidberg::StringParser.

Also it defines Zoidberg::Job and subclasses.

FIXME lots of documentation

METHODS

new()
    Simple constructor, calls shell_init().

shell_init()
    Initialises things like hashes with signal names and sets terminal control. Should be called before usage when the constructor is overloaded.

round_up()
    Recursively calls the round_up() function of all current jobs.

shell_list(@blocks)
    Executes a list of jobs and logic operators.

shell_job($block)
    Executes a single job.

reap_jobs()
    Checks for jobs that are finished and removes them from the job list.

job_by_id($id)
    Returns a job object based on the (numeric) id.

    (Note that the job list is un-ordered,
     so the id and the index are not usually identical.)

job_by_spec($string)
    Returns a job object based on a string. The following formats are supported:

    %integer
        Job with id integer

    %+  Current job

    %-  Previous job

    %?string
        Last job matching string

    %string
        Last job starting with string

sig_by_spec($string)
    Returns the signal number for a named signal or undef if no such signal exists.

JOBS
Jobs are objects of the class "Zoidberg::Job" or a subclass of this class.

This object AUTOLOADS methods to process signals. For example:

  $job->TERM(); # is identical to
  $job->kill('TERM');

  Methods
The job obbjects have the following methods:

new()
    Simple constructor.

exec()
    Execute the job.

round_up()
    Recursively kill the job, ends all child processes forcefully.

fg()
    Take terminal control and run this job in the foreground.

bg()
    Run this job in the background.

kill($signal, $wipe_list)
    Sends $signal (numeric or named) to all child processes belonging to this job; $signal defaults to SIGTERM.

    If the boolean $wipe_list is set all jobs pending in the same logic list are removed.

env(\%env)
    Set local environment for the current job. Can't be set after the job has started.

fd(\@redir)
    Set redirections for the current job. Can't be set after the job has started.

AUTHORS
Jaap Karssenberg, <pardus@cpan.org>

Raoul Zwart, <rlzwart@cpan.org>

Copyright (c) 2011 Jaap G Karssenberg and Joel Berger. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO
zoiddevel(1), Zoidberg, Zoidberg::StringParser