sub parent { while($line = ) { if(#line =~ something) { $parsed = child(*line,*FILE); if($parsed =~ /##_XYZ_##/) { my @tempArray = split /##_XYZ_##/,$parsed; $line = "$tempArray[1]"; redo; } else { continue...further.... } } } } sub child { my *cLine = shift; my *FILE = shift; my $temp = ; if(test($temp )) { return $cLine."##_XYZ_##"."$temp"; } else { ...continue further... } }