3 use open ":std", ":encoding(UTF-8)";
7 use IO::Poll qw(POLLOUT);
9 my $jobs = $ENV{'MAKE_JOBS'} // 1;
11 my $poll = IO::Poll->new();
13 say STDERR "pe: spawning job #$_";
14 open(my $kid, '|-', './mexp') or die "can't exec ./mexp: $!";
15 $poll->mask($kid => POLLOUT);
19 die "poll: $!" if $poll->poll() == -1;
20 my @handles = $poll->handles(POLLOUT) or die "no procs ready?";
21 my $handle = $handles[int(rand(@handles))];
22 say $handle $_ foreach @_;
27 print; # continue the pipeline
30 m/^([^ ]+) <([^>]+)> (.+)(\d{4}-\d{2}-\d{2} \d{2}:\d{2}) <([^>]+)> (.*)/;
31 die "can't parse: $_" unless defined $1;
33 my $level = length($3) - 1;
34 $level = 10 if $3 =~ m/\.\.\d{2}\.\./;
36 if ($level == 0 && @thread) {
44 process @thread if @thread;