Thanks all for your inputs.
I did not understand meaning of this line :( below. I only understood that it
will exit while loop if the input has either yes or no. But then what is " grep
{ lc $normal eq $_ } "?
last if grep { lc $normal eq $_ } 'yes', 'no';
Thanks,
Paryushan
-----Original Message-----
From: Gunnar Hjalmarsson [mailto:[email protected]]
Sent: Saturday, February 28, 2009 3:35 AM
To: [email protected]
Subject: Re: Acepting default value for user input
Chas. Owens wrote:
> On Fri, Feb 27, 2009 at 11:07, Gunnar Hjalmarsson <[email protected]> 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: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/