Ah, I get it
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, June 21, 2001 10:42 AM
Subject: Re: [vox-tech] How to check for data coming in STDIN
> 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
> AAAAACNBQAABAAAAJEFAAAAAAAAkQUAAAAAAACRBQAAAAAAAPcPAAAAAAAA
>
cQYAAAAAAADSAgAAAAAAANICAAAAAAAAfgQAAAAAAAAAAAAAAAAAAH4EAAAPAQAAfgQAAAAAAABx
> BgAAAAAAAHEGAAAA
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com