it's easy to do it with POE
#!/usr/bin/perl
# vim: set et sta ts=4 sw=4 sts=4:
# vi: set ts=4:
# #
use strict;
use warnings;
use POE;
POE::Session->create(
inline_states => {
_start => \&handler_start,
fun1 => \&fun1,
fun2 => \&fun2,
_stop => \&handler_stop,
});
POE::Kernel->run();
exit;
sub handler_start {
my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
print "Starting !\n";
$kernel->yield( 'fun1' );
$kernel->yield( 'fun2' );
}
sub fun1 {
my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
print "I'm function 1!\n";
$kernel->delay(fun1 => 6);
}
sub fun2 {
my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
print "I'm FUNCTION 2!\n";
$kernel->delay(fun2 => 6);
}
sub handler_stop {
print "Stop !!\n";
}
Output:
Starting !
I'm function 1!
I'm FUNCTION 2!
I'm function 1!
I'm FUNCTION 2!
I'm function 1!
I'm FUNCTION 2!
...