Re: Weird output in pyperl
Felix Schwarz <[email protected]> Mon, 11 Jul 2005 20:16:54 +0100
| Newsgroups | gmane.comp.web.zope.perl |
|---|---|
| Message-ID | <[email protected]> |
Hi Jeff,
Jeff Bachtel wrote:
> On Mon, Jul 11, 2005 at 07:24:29PM +0100, Felix Schwarz wrote:
>>
>> Where would you start looking given my bug description?
> I'd check for some error being returned by popen. I'd have callee
> touch a file (inside Perl) to make sure evaluation was happening
> properly. Given all of that, I'd start looking to see what file
> descriptors were being given to child processes and piped, to see if
> that was getting mangled.
Thanks for your comments. After some tests I found out, that...
* perl.eval is being executed. "system('touch pyperl.felix.log');"
creates a new file as expected.
* My problem has something to do with buffering. After eval'ing this
code
print 'Perl\n';
system('touch pyperl.felix.log');
the "Perl" string appeared in caller.py. I figured out that "$| = 1;"
before the Perl print has the same effect.
Therefore I think that pyperl should force the Perl interpreter to
flush all buffers before returning to Python. And there is another
bug: The order of the items is reversed.
I expected
Python
Perl
eval exit code: ...
The first and the last one are printed by Python code the last one by
Perl code. But the output is:
Perl
Python
eval exit code: ...
That means that all Python buffers should be flushed before entering
the Perl eval, right?
Does anybody have any experience with Un*x popen and buffering? If I
run callee.py separately the order of the items is okay. Only
executing it with popen reveals the bug.
--
Felix
_______________________________________________
Zope-perl maillist - [email protected]
http://mail.zope.org/mailman/listinfo/zope-perl