in reply to Re: Checking the include form and getting only the header name
in thread Checking the include form and getting only the header name

I am trying to get only the #include(.*).h part in a given line and using the below code which doesnt seem to be working for me.Can any one advise what is wrong?

INPUT:- ./files/src/services/usb_dcd/private/internals.h:#include "queue.h" ./files/src/services/usb_dcd/private/queue.h:#include <sys/queue.h> $line =~ /\#include(.*)\.h/; # +get only the #include OUTUT:- #include "queue.h" #include <sys/queue.h>

Replies are listed 'Best First'.
Re^3: Checking the include form and getting only the header name
by Eliya (Vicar) on Mar 20, 2011 at 01:22 UTC

    Try

    if ($line =~ /(#include.*\.h[>"])$/ ) { print "$1\n"; }

    or

    $line =~ s/.*(?=#include)//; print $line;

      Sometimes there are comments at the end,so that scenario also needs to be takin into account

      /files/src/services/usb_dcd/private/internals.h:#include "queue.h" /*c +omments*/

        The second option I posted (i.e. cutting off the stuff before #include) takes care of that.

        Otherwise, if you don't want the comments in the output, simply remove the $ (which means "anchor at end of line") in the first option.

Re^3: Checking the include form and getting only the header name
by Anonymous Monk on Mar 20, 2011 at 01:19 UTC