sub popnum3 { my ( $x, $y, $z, $zazb ) = @_; if ( $y == 0 ) { $aob[$x][0] = $initial * ( 1 + $z ); } else { while (1) { my @cPosns; push @cPosns, pos $zazb while $zazb =~ m{(?=c)}g; my $offset = splice @cPosns, rand @cPosns, 1; $aob[$x][$y] = $aob[$offset][ $y - 1 ] * ( 1 + $z ); last; } } return $aob[$x][$y]; }