First things first: on my WS the behavior is identical with or without eval {} around the call to _run, and every 10 seconds a new process comes to life.
That seems actually OK, as 'blubb' doesn't produce any output and so the forked child process loops forever in
while (my $line = <$rdr>) {
[...]
}
Update: In the meantime, the parent process does it's work and forks a new command every 10 seconds.
As
almut has shown in
his her answer, it's a child that forks a child that forks a child... and each new parent waits indefinitely.
If I replace 'blubb' with 'echo blubb', things seem to work as I suppose you want them to.