#!/usr/bin/env perl use v5.12; use C::Scan; use Data::Dumper; use File::Temp qw(tempfile); # Create a C source file to parse... my $code = <<'DATA'; int func_a (); void func_b (int foo); float func_c (int foo, float bar); int func_d (char* baz) { return func_a(4); } DATA my ($fh, $name) = tempfile(); print $fh $code; close $fh; # Let's see what's in the file my $scan = "C::Scan"->new(filename => $name); say "Declared functions:"; say for map $_->[1], @{ $scan->get("parsed_fdecls") }; say "Inline functions:"; say for map { /^\w+\s+(\w+)/s } @{ $scan->get("inlines") }; say "---"; # OK, let's make an array of those function names my @funcs = ( (map $_->[1], @{ $scan->get("parsed_fdecls") }), (map { /^\w+\s+(\w+)/s } @{ $scan->get("inlines") }), ); print Dumper \@funcs; say "---"; # Make a regexp out of that. my $regexp = join "|", map quotemeta, @funcs; # Let's do a search and replace on the original code $code =~ s{($regexp)}{$1\_main}g; say $code;
package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

In reply to Re: Identifying functions in a c file and replacing with a keyword by tobyink
in thread Identifying functions in a c file and replacing with a keyword by ijalab

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.