Файловый дескриптор для вывода из системной команды в Perl - PullRequest
6 голосов
/ 14 июля 2010

Есть ли дескриптор файла / дескриптор для вывода системной команды, которую я выполняю в Perl?

Ответы [ 2 ]

12 голосов
/ 14 июля 2010

Вот пример установки каналов между вашим скриптом и другими командами, используя форму с тремя аргументами open:

open(my $incoming_pipe, '-|', 'ls -l')             or die $!;
open(my $outgoing_pipe, '|-', "grep -v '[02468]'") or die $!;

my @listing = <$incoming_pipe>;          # Lines from output of ls -l
print $outgoing_pipe "$_\n" for 1 .. 50; # 1 3 5 7 9 11 ...
1 голос
/ 14 июля 2010

Да, вы можете использовать трубу следующим образом:

open(my $pipe, "ls|") or die "Cannot open process: $!";
while (<$pipe>) {
    print;
}

См. Документацию для open для получения дополнительной информации и perlipc дляПолное описание работы труб.

...