in reply to STDIN under MAC OS 10.4.11

Nothing wrong with macosx -- it behaves like any other unix system as far as perl is concerned. So maybe if you show us more information... What is the command line you use to run the script? You showed us three lines of code... Is that all there is to the script?

Here are some examples of shell commands that execute the three lines of perl code you showed us, and these all work for me, using command lines in a Terminal shell window (or in an xterm shell) -- I'm showing the shell prompt ("bash$ ") so that you can see which lines are command-line inputs that I typed; the lines that don't start with "bash$ " are the command outputs.

bash$ perl -e 'print "What is your name? "; $name = <STDIN>; print "Yo +ur name is $name\n"' What is your name? Me Your name is Me bash$ cat test.perl #!/usr/bin/perl print "What is your name? "; $name = <STDIN>; print "Your name is $name\n"; bash$ chmod +x test.perl bash$ test.perl What is your name? You Your name is you
So, what are you doing that is different from those examples?

Replies are listed 'Best First'.
Re^2: STDIN under MAC OS 10.4.11
by AliceQuint (Initiate) on May 25, 2008 at 14:39 UTC

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

      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.