#!/usr/bin/perl

use strict;
use Gearman::Worker;
use Getopt::Long;
my $opt_js;
GetOptions('s=s' => \$opt_js);

my $worker = Gearman::Worker->new;
$worker->job_servers(split(/,/, $opt_js));

$worker->register_function("sleep_for" => sub {
    my $job = shift;
    my $arg = $job->arg;

    my $steps = $arg * 4;

    my $res = rand();
    $job->set_status(0, $steps);
    for my $i (1..$steps) {
        select(undef, undef, undef, 0.25);
        $job->set_status($i, $steps);
    }
    return $res;
});

$worker->work while 1;



syntax highlighted by Code2HTML, v. 0.9.1