use Regexp::Common; my $func_rx = qr{ ([a-zA-Z]\w*) # match function name \s* # optional space ($RE{balanced}{-parens='()'}) # match parameter list }sx; while( $code =~ /$func_rx/g ) { print "func = $1\n"; print "param list = $2\n"; } #### $code =~ s/$RE{comment}{'C++'}//g;