system "$command @arguments >/dev/null 2>&1"
and die "...";
Perl 6 - links to (nearly) everything that is Perl 6.
| [reply] [d/l] |
Thanks a lot, that's perfect!
| [reply] |
No, it isn't perfect. It invokes an unknown shell with unquoted arguments. That's begging for trouble.
If you want your script to play safe, fork() manually, then open /dev/null (or even better the return value of File::Spec->devnull()) as STDOUT and STDERR in the child process, then call exec() with a list of program name and arguments. In the parent process, wait() or waitpid() for the PID returned by fork().
This way, no shell is involved, and all of those nasty quoting problems are magically gone.
Of course, this requires more typing and more thinking. Alternatively, you can use one of the CPAN modules that wraps open(), fork(), exec(), waitpid(). Look at IPC::Run and IPC::Run3.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
| [reply] [d/l] [select] |