Don't know, but I spotted a second problem:
kill 2, $strace_pid || warn "couldn't kill $strace_pid: $!";
means
kill 2, ($strace_pid || warn "couldn't kill $strace_pid: $!");
so warn will never get executed. Use lower-precedence or instead of ||, parens around kill's arguments, or parens around the kill call.
In reply to Re: Calling strace from a perl program
by ikegami
in thread Calling strace from a perl program
by jason_s
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |