use strict; while (my ($defNet, $defKey) = each (%defMaskArray)) { ... HOST: for (my $bCount = 1; $bCount <= $hostsN; $bCount++) { ... while (my ($n, $host) = each %$refHandle) { ... my $testResult = test ($bCount, $boundary, $host, $defNet, $defKey, \@routeArray); keys %$refHandle if $testResult ne 'ok'; # Reset each redo HOST if $testResult eq 'retry'; next HOST if $testResult eq 'greater'; } ... } } sub test { my ($bCount, $boundary, $host, $defNet, $defKey, $routeArray, ) = @_; for (my $iCount = 0; $iCount <= 256; $iCount = ($iCount + $boundary)) { # evaluate boundaries if ($iCount == $host || (($iCount + $boundary) - 1) == $host) { print OUT "$defNet for $host fell on a boundary for mask - $boundary\n"; if ($boundary == 256) { ... } else { ... return 'retry'; } } elsif ($iCount > $host) { ... return 'greater'; } else { ... } } return 'ok'; }