in reply to extract C function body

I wrote a C/C++ parser that does what you say...increments depth count when a { is reached and decrements on }:

$depth++ while /\{/g; $depth-- while /\}/g;
If depth == 0, the line is tested using a regex that matches function declarations. I used the following, although I'm unsure how accurate it matches us to the actual grammar (I rolled it in my head):

my $funcrgx    = '((\w+(?:\:\:\w+)*)\s*(\([^)]*\)))';

The one thing you have to be careful of using this method is preprocessor crap. It can throw the depth count off. I wrote in some fuzzy handling code to take care of that (basically always picking the first branch of the #ifdef to follow and not counting parens in the other branch)

Using established parsing modules is probably preferrable to rolling it yourself, but this is how I did it :)