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.