On Thu, 21 Jun 2001, Jay Strauss wrote:
> Actually, I don't get it (well I get it enough to use in my code, but...)
>
> -t Filehandle is opened to a tty.
>
> What does this mean?
If the filehandle is a tty, it returns true.
> I suppose I don't understand what a "tty" is.
An interactive device. That is, it is used for both input and output,
even though the filehandle being tested may only correspond to one of
those directions.
> I'd
> think "-t" would return a 0 if I wasn't piping something in on STDIN, vs
> returning a 1 when no STDIN
STDIN is always open, unless you close it. The only question is what it is
connected to... an interactive terminal, or a pipe/file/other device.
"-t" returns 1 for the former, or 0 otherwise.
>
> Jay
>
>
> ----- Original Message -----
> From: "Micah Cowan" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, June 20, 2001 6:30 PM
> Subject: Re: [vox-tech] How to check for data coming in STDIN
>
>
> > On Wed, Jun 20, 2001 at 06:06:39PM -0500, Jay Strauss wrote:
> > > In perl, if I have a pgm:
> > >
> > > while (<>) {
> > > print "this is the line: $_";
> > > }
> > >
> > > normally I'd invoke the pgm like:
> > >
> > > echo "repeat this line" | ./pgm
> > >
> > > But if I accidentally invoke it like:
> > >
> > > ./pgm
> > >
> > > How would I prevent the while loop from running (i.e. pseudocode):
> > >
> > > while (<>) if (exists <STDIN>) {
> > > print "$_";
> > > }
> >
> > Well, that won't work - and the while (<>) actually does that for you
> > automatically anyway.
> >
> > It won't work though because STDIN /does/ exist. It's the interactive
> > tty by default (when it's not getting a redirected input).
> >
> > You can exploit /that/ fact, though, by doing this (tested):
> >
> > -------
> > #!/usr/bin/perl -w
> >
> > die "Hey! I was expecting a redirected STDIN!\n" if (-t);
> > print "this is the line: $_" while (<>);
> > -------
> >
> > The -t test evaluates to true if it's argument is a tty - if no arg is
> > given, STDIN is assumed.
> >
> > Micah
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<[EMAIL PROTECTED]> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...2k
---------------------------------------------------------------------------