Hi Alan,
On Mon, 22 Aug 2011 13:10:05 +0530
Alan Haggai Alavi <[email protected]> wrote:
> Hello Anant,
>
> > i want to input some numbers via <stdin> in while loop.And loop should be
> > broken if any nonnumeric character is entered.So how it can be checked.
> >
> > ........................
> > .........................
> > my @ln;
> > my $i=0;
> > print"Give line numbers you want to put into array.\n";
> > while(1){
> > $ln[$i]=<stdin>;
> > chomp $ln[$i];
> > if($ln[$i] =~ /\D/){
> > print"Its not numeric value.\n";
> > $i--;
> > last;
> > }
> > $i++;
> > }
> > .............................
>
> In the above program, `$i` is mostly useless. The length of the array can
> easily be found out by using `scalar @ln`; Perl's `push` function can be used
> for pushing values into the array. There is no need for an index. The program
> can be rewritten as:
>
> use strict;
> use warnings;
>
> my @numbers;
> print "Enter numbers:\n";
> while (1) {
> chomp( my $number = <STDIN> );
> if ( $number =~ /\D/ ) {
> print "$number is not a numeric value.\n";
> last;
> }
> else {
> push @numbers, $number;
> }
> }
It's a good idea to always use "last LABEL;" instead of "last;" (as well as
"next LABEL;" etc. in case more loops are added in between.
So the program becomes:
[CODE]
use strict;
use warnings;
my @numbers;
print "Enter numbers:\n";
STDIN_LOOP:
while (1) {
chomp( my $number = <STDIN> );
if ( $number =~ /\D/ ) {
print "$number is not a numeric value.\n";
last STDIN_LOOP;
}
else {
push @numbers, $number;
}
}
[/CODE]
See:
http://perl-begin.org/tutorials/bad-elements/#flow-stmts-without-labels
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
What Makes Software Apps High Quality - http://shlom.in/sw-quality
Live as if you were to die tomorrow. Learn as if you were to live forever.
— http://en.wikiquote.org/wiki/Mohandas_Gandhi (Disputed)
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/