my @matches2; my $sw_test; my $func_name; my $func_start; my $func_full; my $print; my $count=0; Functionparser(); sub FunctionParser { my $linenum =0; open FILE2, $ARGV[0] or die $!; while() { $linenum++; if(!$sw_test && (/([:\w]+)\((.*\))/) ) { print "first\n"; $func_name=$1; $func_start=$.; $func_full= $_; $sw_test=1; print "$linenum) $_\n"; $linenum1 = $linenum; $print=1; next; } $count++ if $sw_test && /\{/; $count-- if $sw_test && /\}/; if($sw_test && $count==0) { if($print) { push(@matches2, { 'Start' => $linenum1, 'End' => $linenum, 'FuncName' => $func_full}); $print=0; } $sw_test=0; } } close FILE2; }