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
---------------------------------------------------------------------------


Reply via email to