in reply to qr//ms problem

This is a much harder problem than you think. Try using Regexp::Common::balanced to strip out the code blocks. Unfortunately, your pattern still won't get you function names for valid C source code like:

int foo(int bar, char ** baz) { ... }
Maybe something like:
(\w+)\s*$RE{balanced}{-parens=>'()'}[^{]*$RE{balanced}{-parens=>'{}'}

Though that will still have problems for some older C code.

Updated: Looking though CPAN finds C::Scan, which looks like it does what you want to do.

my $c = new C::Scan 'filename' => $filename; my $arrayref = $c->fdecls;

Updated 2: I'm a bit confused as to why you are implementing the only answer of your previous version of the same question that was stated flat out not to work by the poster.


The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. -- Cyrus H. Gordon