use MCE; sub proc1 { my $hash_ref = shift; for (keys %{ $hash_ref }) { print $_, ': ', $hash_ref->{$_}, "\n"; } } sub proc2 { my $hash_ref = shift; for (keys %{ $hash_ref }) { print $_, ': ', $hash_ref->{$_}, "\n"; } } my $mce = MCE->new( max_workers => 2, user_func => sub { my ($self) = @_; while (1) { if ($self->wid == 1) { my %hash1 = ( 'key1' => 'value1' ); $self->do('proc1', \%hash1); } else { my %hash2 = ( 'key2' => 'value2' ); $self->do('proc2', \%hash2); } sleep(600); } } ); $mce->run;