in reply to Re^2: Yet more While issues
in thread Yet more While issues

What's with the useless while(1) { ...; last; } again?

Replies are listed 'Best First'.
Re^4: Yet more While issues
by Dandello (Monk) on Mar 17, 2011 at 19:48 UTC

    Habit

    I'm still trying to get everything configured to work right - When I have the code set up like this:

    else { my $pos = -1; push @cPosns, $pos while ($pos = index($zazb, 'c', $pos+1)) >= 0; my $offset = $cPosns[rand @cPosns]; $cell = sprintf '%.2f', popnum3( $x, $y, $copycop, $offset, ); }
    then
    sub popnum3 { my ( $x, $y, $z, $offset ) = @_; if ( $y == 0 ) { $aob[$x][0] = $initial * ( 1 + $z ); } else { while (1) { $aob[$x][$y] = $aob[$offset][ $y - 1 ] * ( 1 + $z ); last; } } return $aob[$x][$y]; }
    It's reiterating over the entire string for every single 'a' or 'c' which starts fast then slows to a crawl

    When I move this section

    my $pos = -1; push @cPosns, $pos while ($pos = index($zazb, 'c', $pos+1)) >= 0;
    above all the if/else's, to just under where $zazb is defined, then the $offset variable in
    else { my $offset = $cPosns[rand @cPosns]; $cell = sprintf '%.2f', popnum3( $x, $y, $copycop, $offset, ); }
    becomes undefined when imported into popnum3.

    So obviously I'm still missing something.

    There is always at least 1 'c' in the string so that's not the problem.