Running a program in the background doesn't suppress STDOUT.
If you just want to suppress the output and not do anything with it you can redirect it to /dev/null:
system("/some/program >/dev/null");
If you want to capture its output to process it, the easiest way is to use `` quotes:
my $output = `/some/program`;
If your program has a lot of output that is better captured as it arrives you can use piped open:
open(my $handle, "/some/program|") or die;
while (<$handle>) {
# do stuff with a line
}
See also perlopentut and perlipc.
|