Wow, and I thought mine was cryptic.  Maybe you can explain exactly what
you're doing here.  I know that by setting $| to 1 you are setting the
selected filehandle (STDOUT by default) to AutoFlush instead of buffering
it, but I don't get the rest.  It looks like you're saying this:

     select() the first element of the list (select(STDOUT), $| = 1)

which should be the equivalent of "select(select(STDOUT))".  I'm assuming
that select(STDOUT) returns the filehandle that was selected if successful,
because that would make it the equivalent of 

     select(STDOUT)

but then you have the $| = 1 in there, which will set the autoflush to on
for STDOUT if executed any time after select()ing STDOUT and before select()
ing another filehandle.  I just don't understand how it all fits together as
presented, and maybe that's where you can help me.  How is this different
from:

     select(STDOUT);
     $| = 1;




-----Original Message-----
From: Weijie Ding [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 02, 2002 9:52 PM
To: Andrew F.; [EMAIL PROTECTED]
Subject: Re: Joining with a basic question


Hi, Andrew F.,
2002-12-03 13:48:40

I think this may because your buffered output.
You can use the following to set output unbuffered/flushed before your first
statement in your program.

select((select(STDOUT), $| = 1)[0]);

======= At 2002-12-02, 21:01:00 you wrote: =======
>Hello all. My name is Andrew.
>
>    I might as well get right to it. I'm writing a real basic script, since
I'm still learning Perl. It looks like this:
>
>
>print "Input a name: ";                      #Prompt for a name
>sleep .5;
>$name1 = <STDIN>;                            #User input
>
>print "\nInput another name:";               #Second prompt
>sleep .5;
>$name2 = <STDIN>;                            #Second input
>
>if ($name1 eq $name2) {;                     #Compares two variables and
returns
>    print "\nThese are the same.";           # whether or not they are
similar
>    }
>  else {;
>    print "\nThere are not the same.";
>    };
>
>The problem is, when I run this, it asks for the input before it prints the
visible prompt. In other words, it treats it as if it were ordered:
>
>$name1 = <STDIN>;                            #User input
>$name2 = <STDIN>;                            #Second input
>print "Input a name: ";                      #Prompt for a name
>sleep .5;
>print "\nInput another name:";               #Second prompt
>sleep .5;
>
>Does anyone know why it does this or how to prevent it?
>
>Thanks, 
>    Andrew
========================================
                        
Best regards.                            
Weijie Ding
[EMAIL PROTECTED]



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to