On Tue, Jan 28, 2003 at 04:35:30PM -0600, NESTING, DAVID M (SBCSI) wrote:
> > open2(\*READ, \*WRITE, '/bin/grep', $sanitized_arg,
> > "/usr/dict/words") or die;
>
> Note also that in 5.8, if all you're interested in is STDOUT, Perl lets you
> do this:
>
> open(FH, "-|", "/bin/grep", $sanitized_arg, "/usr/dict/words") or die ...;
>
> This is somewhat equivalent to doing the fork and exec in list form, which
> would not invoke the shell to parse the command string.
I wrote System2 to collect STDOUT and STDERR, in a manner that
bypasses the shell as well. Output is returned in a a scalar, not
a FH, which an important distinction.
use System2;
my ($out, $err) = system2("/bin/grep", $sanitized_arg, "/usr/dict/words");
my ($exit_value, $signal_num, $dumped_core) = &System2::exit_status($?)
See <http://search.cpan.org/author/REICHERT/System2-0.82/System2.pm>
Same kinda approach, and behaves on older perl versions.
--
Brian 'you Bastard' Reichert <reichert@numachi.com>
37 Crystal Ave. #303 Daytime number: (603) 434-6842
Derry NH 03038-1713 USA BSD admin/developer at large
This archive was generated by hypermail 2b30 : Tue Jan 28 2003 - 15:06:59 PST