Erlang ports and Perl

Bob Shafer bobsh@REDACTED
Wed Feb 23 18:04:31 CET 2000


The "ok" is probably stuck in a buffer, and you need to flush it. There's
at least one Perlism for that... I don't have a perl manual handy (and I
use Perl only rarely, so don't remember), but I do have some code that
needed to do that, and it uses "autoflush" and also "$|" might have
something to do with it.

On Wed, 23 Feb 2000, Sean Hinde wrote:

> Hi all,
> 
> I'm having a little difficulty with using a perl script as a port program:
> 
> #!/usr/local/bin/perl
> while(1) {
> $cmd = <STDIN>;
> print STDERR "Received OK";
> print "ok";
> print STDERR "Sent";
> }
> 
> My erlang port program:
> 
> Port = open_port({spawn, "perlscript"}, [stream]),
> Port ! {self(), {command, "hello"}},
> receive
>   Data ->
> 	Data
>   after 10000
> 	timedout
> end
> 
> The result of this is that perl receives the hello message and prints
> "Received OK" and "Sent" on stderr, but my erlang process never receives
> "ok". Tracing confirms that the hello message is sent to the port but
> nothing is received. Using an equivalent C program as the port program with
> the same erlang code works fine.
> 
> Anyone any idea?
> 
> Sean
> 




More information about the erlang-questions mailing list