use threads; ... my $pid; my $data; async{ $pid = open my $check, '-|', 'sleep 60'; $data = do { local $/; <$check>; }; }->detach; sleep 3; kill -9, $pid if kill 0, $pid; ...