|
|||||||||||||||||||||||||||
Jeppe Koefoed <sslug@sslug> wrote:
> $pid = &open2 ("OUTPUT","INPUT","/usr/local/bin/auth-program");
[...]
> $result=<OUTPUT>;
> print $result;
Du har problemer pga buffering af 'retur-kanalen' (auth-program's stdout).
Den kan du slippe omkring ved at forbinde auth-program's stdout direkte til
din egen stdout (virker naturligvis kun fordi du ikke skal ind og pille i
retur-strengen).
Og iøvrigt er det lidt pænere at bruge "while (<>) { ... }" istedet for "do
{ $_=STDIN; ... } while (1)", så du kan ^D'e dig ud når du er færdig. Og så
bør du bruge $_ som den 'default variabel' den er.
Alt ialt:
--cut--
#!/usr/local/bin/perl -w
use strict;
use IPC::Open2;
my $pid = open2('>&STDOUT', 'INPUT', '/usr/local/bin/auth-program');
while (<>) {
s/:/ /;
print INPUT;
}
close INPUT;
--cut--
/Lars
|
||||||||||||||
|
||||||||||||||