Этот код shell_exec () крайне уязвим для внедрения в оболочку - вы уверены, что удаленная служба не будет содержать что-то вроде:
; rm -rf /
Также, file()
возвращает содержимое файла в виде массива - вы не можете напрямую передавать массивы через командную строку. Только строки.
Умеренно более безопасная версия:
$contents = file_get_contents('http://etc....');
$safe_contents = escapeshellarg($contents);
$result = shell_exec('perl_prog.pl $safe_contents');
На стороне Perl вы бы использовали
my ($contents) = @ARGV;