kort has asked for the wisdom of the Perl Monks concerning the following question:
Hello Monks!
I'm an Perl initiate, and script I'm trying to write is far above what I've read and searched all over the place, hence the registration and question.
I would like to write a script that goes through all the folders of my C project and catches all calls to a C function: printf and assign every single catch to an array as a single element. And all that above is pretty easy, I did something like this (files array is filled with File::Find::Rule):
foreach my $file (@files) { open my $fh, '<', $file or warn "Coudn't open $file \n"; while (<$fh>) { if (/(printf.*\;)/sm) { my $buffer = $1; push @printfs, $buffer; } } close $fh; }
Above catches only one line printfs. Problem is, the printf calls sometimes span through multiple lines (from 2 up to 5), and that makes it hard to catch for me.
I've already tried things like last if (m/\;$/), yet I failed horribly. Can you help me with that?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Catching multiple lines and assigning them as a single array element
by Eily (Monsignor) on Oct 30, 2015 at 00:57 UTC | |
by kort (Initiate) on Nov 03, 2015 at 20:25 UTC | |
|
Re: Catching multiple lines and assigning them as a single array element
by Anonymous Monk on Oct 29, 2015 at 23:35 UTC | |
by kort (Initiate) on Nov 03, 2015 at 20:20 UTC |