Hi , On Sun, Jun 23, 2013 at 9:39 AM, timothy adigun <2teezp...@gmail.com> wrote:
> Hi lee, > Please, check my comment below: > > On Sun, Jun 23, 2013 at 3:43 AM, lee <l...@yun.yagibdah.de> wrote: > >> James Alton <jamesalton...@gmail.com> writes: >> >> > lee, >> > >> > You have a post statement if and then a code block. You can only use >> one of >> > two forms: >> > >> > print "test" if $color eq "blue"; #no parenthesis required >> > if($color eq "blue"){print "test";} >> >> ++ > >> And I can't have 'last if $color eq "blue" print "test\n";'? That would >> be something quite natural and a logical thing to do ... >> >> logical? How is that? Wrap up, the function 'print' and 'last' in the if > statement like so: > if( $color eq "blue"){ > print "test\n"; > last LABEL; > } > NOTE: That when last is used the loop in question is immediately exits > and execution start at the LABEL statement if provided. So any code after > the last function is not disregarded. > Oops! I mean is DISREGARDED !!!... > > For example: > <CODE> > use warnings; > use strict; > > for( qw( rougue blac voir vervet)){ > print $_,$/; > last if $_ eq 'voir'; > print '1 2 3',$/ > } > </CODE> > Which produces this: > > rougue > 1 2 3 > blac > 1 2 3 > voir > > > The color is been printed, then 1 2 3, BUT immediately the if condition > is met, the printing of 1 2 3 was disregarded. Of course is best practice > to use LABEL with last function. > > > As far as last, http://perldoc.perl.org/functions/last.html >> > > Please check this link again.... > >> > I think this fixes your program: >> > >> > >> > use strict; >> > use warnings; >> > use autodie; >> > >> > my $counter = 0; >> > >> > while($counter < 8) { >> > if($counter > 2) { >> > print "if: " . $counter . "\n"; >> > last; >> > } >> > else { >> > print "else: " . $counter . "\n"; >> > } >> > $counter++; >> > } >> >> >> Yes, it gives the same output as ... >> >> >> use strict; >> use warnings; >> use autodie; >> >> my $counter = 0; >> >> while($counter < 8) { >> next if($counter > 2); >> print "else: " . $counter . "\n"; >> } >> continue { >> if($counter > 2) { >> print "if: " . $counter . "\n"; >> last; >> } >> $counter++; >> } >> >> >> ... and is more efficient :) > > > Which is? > > > >> >> -- >> "Object-oriented programming languages aren't completely convinced that >> you should be allowed to do anything with functions." >> http://www.joelonsoftware.com/items/2006/08/01.html >> >> -- >> To unsubscribe, e-mail: beginners-unsubscr...@perl.org >> For additional commands, e-mail: beginners-h...@perl.org >> http://learn.perl.org/ >> >> >> > > > -- > Tim > -- Tim