Craig A. Berry wrote:
At 11:20 PM -0400 8/22/05, John E. Malmberg wrote:
<snip>
You're really better off just changing all the print statements of the form:
print "foo", "\n";
to
print "foo" . "\n";
That way you'll have a single I/O that won't generate a record
boundary in the mailbox underlying the pipe. This is really a bug in
our piping implementation, one very likely inherent in any pipe
implementation based on mailboxes, which are fundamentally
record-oriented devices. We desperately need a pipe implementation
based on sockets or --- preferably -- global sections, or at least a
clean way to fall back the the CRTL pipe implementation, which may
already have such improvements in VMS v8.x. In the meantime,
modifying the test to have something that is still idiomatic Perl but
doesn't require any special casing seems the least annoying
alternative (or at least I've been annoying people with patches of
this type for years and they seem to tolerate it).
Actually some improvements were put into at least 7.3-2, I have not
checked earlier. The mailbox I/O can be marked as stream.
But I still have not figured out where the extra newlines are being
inserted. I do not think they are inserted by the mailbox reading and
writing, which means that just adding the stream mode support will not
fix any thing.
I am pretty sure that I can figure out how to safely remove the ones
that should not be there, but for backwards compatibility I have to
provide a way to get the existing behavior.
Right now, I am going to let this problem sit as there is a work around
while I go after the other failing tests.
If I am going to put any fixes in this code, I might as well bring it up
to date to handle the larger DCL command line size of 8192 characters.
-John
[EMAIL PROTECTED]
Personal Opinion Only