in reply to Re: STDIN under MAC OS 10.4.11
in thread STDIN under MAC OS 10.4.11

Thank you.

What I've got is a file example2.pl that has this in it and nothing else

#!/usr/bin/perl print "What is your name? "; $name = <STDIN>; print "Your name is $name\n";

I also have a file example1.pl that has this in it and runs exactly as you'd expect

#!/usr/bin/perl print "Hello, there!\n";

I'm not new to Perl or to programming, but I am having to switch from MacPerl to Perl on the Mac under Unix (Darwin); although, I used to work for Sun Microsystems, so Unix isn't unfamiliar, either.

I thought I'd just learn Perl all over again from the beginning, when I ran up against the inability of the script to stop for the keystokes. What????????

Replies are listed 'Best First'.
Re^3: STDIN under MAC OS 10.4.11
by graff (Chancellor) on May 26, 2008 at 17:49 UTC
    I ran up against the inability of the script to stop for the keystokes.

    So, are you saying that it is still the case, when you run "example2.pl" as a shell command line (i.e. in a Terminal window or xterm), the script does not wait for input from the keyboard? I don't get that sort of behavior on my mac -- I stored the four-line script to a file called "example2.pl", just as you posted it, and when I run "example2.pl" as a command in a shell, it shows the prompt, waits for me to hit "return", and echos whatever I typed before hitting "return".

    If you were running the script with input redirection ( example2.pl < some.file ) or if you were piping data from some other process to the script ( other_process | example2.pl), then of course the script won't wait for input from the keyboard, because STDIN is tied to a file or a pipe, respectively. But you probably knew that already, being familiar with unix.

    Also (of course) if you type "example2.pl" at the shell prompt, and then hit "return" twice in a row, the second return will be taken as input at line 3 of the script, and it will finish, echoing an empty string.

      Thank you!

      Behavior is the same at command line or from file. And, obviously, other people can get this simple-minded script working.

      The very first time I ran "Hello, World!" on this Mac, I got the reply "Hello, Perl!" -- took a moment to realize what was odd. Guess it was a warning.