[Chicago-talk] Script design question

Steven Lembark lembark at wrkhors.com
Mon Dec 19 10:23:01 PST 2005



-- "Young, Darren" <Darren.Young at ChicagoGSB.edu>

> 
> Looking for some input on a script before I sit down and try to create
> it. The basic need is to launch 4 system commands (at the same time) and
> watch each one for completion and when one is done to start another.
> Basically, it needs to keep 4 child processes running up to a defined
> end.

Look at Schedule::Parallel. You pass in a paralle job
count and array of closures. It tracks the stauts and 
returns the unused portion if any of the jobs returns
non-zero (so you can fix the problem or report what 
went wrong). 

    <http://search.cpan.org/~lembark/Schedule-Parallel-1.1/>

The closures allow you to pass in arbitray code that 
has to be run.

For the backup you can use a single sub that takes
what has to be backed up as an argument and then
submit it with something like:

    use Schedule::Parallel;

    my @backupz = 
    qw(
        /path/to/one
        /path/to/another
        ...
    );

    my @queue = 
    map
    {
        my $path = $_;

        sub { imbackup $path }
    }
    @backupz;

    runqueue 4, @queue;

    __END__

S::P will keep track of exit status and report on non-zero
exits or signals killing things.

-- 
Steven Lembark                                       85-09 90th Street
Workhorse Computing                                Woodhaven, NY 11421
lembark at wrkhors.com                                     1 888 359 3508


More information about the Chicago-talk mailing list