如何将外部程序的输出发送到Perl套接字?

时间:2010-04-13 12:55:31

标签: perl sockets

我刚开始使用Perl学习套接字编程。是否有方法使用Perl套接字编程从已运行的脚本/工具发送输出(STDOUT)数据/图像?

1 个答案:

答案 0 :(得分:3)

如果您的现有脚本将其输出转储到控制台(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权限的情况下绑定它。

编辑:

那么:

#!/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";