Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
This is a bit tricky. Instead of writing
@ok = `grep @opts '$search_string' @filenames`;
You have to do this:
my @ok = (); if (open(GREP, "-|")) { while (<GREP>) { chomp; push(@ok, $_); } close GREP; } else { exec 'grep', @opts, $search_string, @filenames; }
Just as with
system(),
no shell escapes happen when you
exec()
a list.
There are more examples of this Safe Pipe Opens.