Chas. Owens wrote:
On Fri, Feb 27, 2009 at 11:07, Gunnar Hjalmarsson <nore...@gunnar.cc> wrote:
Sarsamkar, Paryushan wrote:
I would like to accept some user inputs (using <STDIN>), but it might be
easier for a user if I can provide the default value, so that they just
have to press ENTER.

How can I do that? I've played around with <STDIN> but I cannot make it
work exactly as I'd like.

E.g.
Do you want to do the normal thing? [yes] :

   print 'Do you want to do the normal thing? [yes] : ';
   chomp( my $normal = <STDIN> );
   $normal ||= 'yes';
snip

This only works if 0 (or any false value other than '') is not a valid response.

I agree; should better be:

    $normal = 'yes' if $normal eq '';

Thanks for pointing it out.

Which takes us to the obvious step of validating the user input.

    my $normal;
    while (1) {
        print 'Do you want to do the normal thing? [yes] : ';
        chomp( $normal = <STDIN> );
        $normal = 'yes' if $normal eq '';
        last if grep { lc $normal eq $_ } 'yes', 'no';
        print "\nERROR: Answer must be yes or no.\n\n";
    }

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to