Using Perl 5.8.8 on Linux, need the output of a perl 'system' command to be hidden. The command in my code is:
system("wget", "$url", "-Omy_folder/$date-$target.html", "--user-agent=$useragent");
I've tried using > /dev/null 2>&1
in different places in the system command, like this:
system("wget", "$url", "-Omy_folder/$date-$target.html", "--user-agent=$useragent","> /dev/null 2>&1");
Can anyone help me with where the redirection to /dev/null
should be?
Best Answer
When you call system() with more than one arg, you are telling perl to pass it directly to one of the exec*() calls, so it will not be called with a shell. The shell is the thing that understands file redirection. Try this:
Note that this is technically less secure than passing it straight to exec.
For quoting use String::ShellQuote, or just implement the logic yourself:
Also, to make this a little more sys-admin-y and a little less programmer-y, have you considered using the -q option to wget instead of jumping through the shell/file redirection hoops?