Как я могу отправить вывод внешних программ в сокет Perl? - PullRequest
4 голосов
/ 13 апреля 2010

Я только начал изучать программирование сокетов с использованием Perl. Есть ли способ отправки выходных (STDOUT) данных / изображений из уже запущенных скриптов / инструментов с использованием программирования на сокете Perl?

1 Ответ

3 голосов
/ 13 апреля 2010

Если ваш существующий сценарий выводит свои выходные данные на консоль (STDOUT), вы можете просто перенаправить его, используя netcat (см. nc(1)):

На сервере:

server-host:~$ nc -l -p 3232 > file.txt

На клиенте:

client-host~$ perl -e 'printf( "Hello %s\n", "world" )' | nc server-host 3232

Выбор, если порт (3232), конечно, произвольный, но в Unix он должен быть больше 1024, чтобы вы могли связать его без привилегий root.

Edit:

Как насчет этого:

#!/usr/bin/env perl
use strict;

my $usage = "Usage: $0 <host:port> <prog>\n";
my $hp = shift @ARGV or die "$usage";
my $prg = shift @ARGV or die "$usage";
my ($host,$port) = split ":", $hp;

defined $host or die "$usage";
defined $port or die "$usage";

exec "$prg @ARGV | nc $host $port" or die "can't execute $prg\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...