Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Nov 2002 11:41:18 +0000
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        freebsd-questions@FreeBSD.ORG
Subject:   Re: trouble with perl writing to pipes :(
Message-ID:  <20021108114118.GA3823@happy-idiot-talk.infracaninophi>
In-Reply-To: <20021108094643.GA3590@grummit.biaix.org>
References:  <20021108094643.GA3590@grummit.biaix.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 08, 2002 at 10:46:43AM +0100, Joan Picanyol i Puig wrote:
> I'm noticing some weird behaviour having perl writing to pipes (they eat
> my output):
> 
> grummit:~/tmp/runwhen/dirs/root/runwhen/cvsup$ cat shownextrun
> #!/usr/bin/perl -w
> print('sleeping; next run at: ',
>       scalar(localtime(time()+$ENV{'DELAY'})), "\n");
>       exec({ $ARGV[0] } @ARGV);
> 
> grummit:~/tmp/runwhen/dirs/root/runwhen/cvsup$ DELAY=1 ./shownextrun true
> sleeping; next run at: Fri Nov  8 10:44:21 2002
> 
> grummit:~/tmp/runwhen/dirs/root/runwhen/cvsup$ DELAY=1 ./shownextrun true | cat
> grummit:~/tmp/runwhen/dirs/root/runwhen/cvsup$

You may find that appropriate use of the $| special variable (or
equivalently the autoflush method of the IO::Handle object) suddenly
makes things work a lot better.

Either that, or always write to a pipe in chunks of 4K at a time...

Hmmm... This only seems to affect perl-5.00503 --- perl-5.6.1 works
for me in the way you expect without any extra flushing.

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.                       26 The Paddocks
                                                      Savill Way
                                                      Marlow
Tel: +44 1628 476614                                  Bucks., SL7 1TH UK

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021108114118.GA3823>