I'd definitely start by not using csh. It has a pile of problems as a scripting language. Especially related to pipes and file descriptors.
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ -Andrew > On Apr 27, 2017, at 11:18, Bill Ricker <[email protected]> wrote: > > Apparently i replied off-list. Here's my reply for those following along > at home. > > // Bill > > ---------- Forwarded message ---------- > > > Is your interactive commandline provided by (ba)sh or [tcz]sh ? > I see your script is Csh. > That's one possible difference since that's where the pipe is actually > created and sub-process spawned. > > $| won't > do what you want. > > perldoc -v '$|' > > HANDLE->autoflush( EXPR ) > $OUTPUT_AUTOFLUSH > $| > > If set to nonzero, forces a flush right away and after every write or print > on the currently selected output channel. Default is 0 (regardless of > whether the channel is really buffered by the system or not; $| tells you > only whether you've asked Perl explicitly to flush after each write). > STDOUT will typically be line buffered if output is to the terminal and > block buffered otherwise. Setting this variable is useful primarily when > you are outputting to a pipe or socket, such as when you are running a Perl > program under rsh and want to see the output as it's happening. This has no > effect on input buffering. See getc for that. See select on how to select > the output channel. See also IO::Handle. > > Mnemonic: when you want your pipes to be piping hot. > > If you want actual non-blocking output in an output pipe or to a file, I > _think_ you'll need > > perldoc IO::Handle > > *$io->blocking ( [ BOOL ] )* > > If called with an argument blocking will turn on non-blocking IO if BOOL is > false, and turn it off if BOOL is true. > > blocking will return the value of the previous setting, or the current > setting if BOOL is not given. > > If an error occurs blocking will return undef and $! will be set. > as in > $io->blocking( 0 ) or croak "$!: io->blocking ( 0 )"; > > the "sub init" for SSL-capable netcat script "scnc" does : > > $SIG{INT} = sub { $self->exit }; > $SIG{CHLD} = 'IGNORE'; > > STDOUT->blocking(0); > STDOUT->autoflush(1); > STDIN->blocking(0); > STDIN->autoflush(1); > > > _______________________________________________ > Boston-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/boston-pm _______________________________________________ Boston-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/boston-pm

