in reply to Re^5: System command silent screen
in thread System command silent screen

No, it isn't perfect. It invokes an unknown shell with unquoted arguments. That's begging for trouble.

If there is a non-zero number of arguments, the following remove the need for quoting:

use IPC::Open3 qw( open3 ); { open(local *FR_NULL, '<', '/dev/null') or die; open(local *TO_NULL, '>', '/dev/null') or die; my $pid = open3('<&FR_NULL', '>&TO_NULL', undef, $command, @arguments); waitpid($pid, 0) or die; }

Replies are listed 'Best First'.
Re^7: System command silent screen
by locked_user sundialsvc4 (Abbot) on Oct 11, 2010 at 13:31 UTC

    I nevertheless prefer afoken’s solution, because it would be a general one.   (Also, as noted, it is something that has probably already been done.)

    In my book, it is well worth the “extra effort” to develop a solution that makes a problem go-away completely, in every case, and never come back under any (unforseen at the time it was written) circumstances.   (The “suh-prize!”-es usually pop up at three o’clock in the morning.)   Best to “whack that mole” such that it stays whacked.

      I nevertheless prefer afoken’s solution

      Using fork and exec and pipe and dup2 yourself? You're talking about a substantial amount of code. (50 lines?) That's the solution of his I was replacing.