[Clip] Re: Problems capturing STDERROR
--- In ntb-clips@y..., "Grant" <emerge@p...> wrote:
While examining your script/clip, the only thing that really gets my
attention is this line:
> ^!INFO ^$GetOutput(perl "^$GetDocName$")$
It tells all.
You see - I have all these problems without the quotes around "^**".
I think ^$GetOutput$/^$GetDosOutput work best (if not ONLY) with ^!
TextToFile or ^!Info or the output will get placed in the ^** doc.
GetDosOutput or GetOutput, it does not matter for WIN98/95/ME. But it
may matter for Win NT/2000.
^!TextToFile "^$GetAppPath$StdError.err" ^$GetDosOutput(perl "^**")$
^!Info ^$GetOutput(perl "^**")$
Do me a favor, please?
Just don't tell anybody that I did not use the "" around ^**.
That is very sad!
- At 10:20 PM 4/4/01, Jason Waugh wrote:
> >I don't know the intricacies of using ^** you might have a point about it'sThanks for the memory jog!
> >'inconsistency' You would think it would work the same as ^$GetDocName$.
> >Actually I never bother using "^**" and always use ^$GetDocName$
>Well, it's not so much an inconsistency with ^** as it is an inconsistency
>in the way NoteTab and Perl are working together with respect to
>STDERR. Maybe Perl isn't flushing before NoteTab thinks it's done
>capturing STDERR? Maybe the NoteTab parser occasionally chokes on parsing
>^**? This would result in the two different error messages appearing on
>different tries with the same script....
I experienced the buffering problem when porting PERL scripts from Unix to
MS-DOS several years ago (Perl 4, so the details have changed about
avoiding the problem since I wrote those scripts). I recall needing to
either disable buffering, or set it to line buffering (from block
buffering) to make the problem go away.
Find a Perl reference (here's one I have: "Programming Perl", second
edition, by Larry Wall, Tom Christiansen & Randal L. Schwartz, published by
O'Reilly, copyright 1996) and look for information on the "$|"
variable. It allows you to set output filehandles to block buffering
(default) or line buffering (which is needed for Perl with NoteTab, since
it runs as a DOS program).
Hope this is helpful.