David, 1) Instead of calling system() directly, save the command to a string first and print it out. That will help you check if there are problems with quotes or other shell special characters. If you're still having a problem, post the command command line (with variables substituted) and we can help diagnose the issue.
2) I highly discourage using the shell to parse commands in this way (system() calls the shell if you give it a single string argument). In the best case, it just creates confusion; in the worst case it results in a security hole (if this is part of a CGI script, a remote user may be able to execute arbitrary commands on your system as the apache user). Instead, use the multi-argument form of system(); this calls fork() and exec() and avoids the shell entirely. 3) If you want to capture STDOUT and/or STDERR from a command, have a look at the following references. Backticks allow you to easily capture STDOUT, but the shell will parse the command. Consider instead: http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlipc.pod#Safe_Pipe_Opens http://search.cpan.org/~dgold/Proc-Reliable-1.16/Reliable.pm http://search.cpan.org/~nwclark/perl-5.8.8/lib/IPC/Open2.pm http://search.cpan.org/~nwclark/perl-5.8.8/lib/IPC/Open3.pm The first reference will probably be sufficient for your needs, but Proc::Reliable or IPC::Open2 may be easier to use. -Sam _______________________________________________ rrd-users mailing list [email protected] https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users
