http://qs321.pair.com?node_id=568546


in reply to Modify C comment removal code to kill newlines

Hi, here is another solution.
use Regexp::Common qw/comment/; local $/; $_ = <DATA>; s/$RE{comment}{C}\n*//gm; print; __DATA__ /* I have good commenting style */ i = 1; /* And I comment every line of code */ i++; /* Even if it's pointless */ j = i; j++;
Boris

Replies are listed 'Best First'.
Re^2: Modify C comment removal code to kill newlines
by anjiro (Beadle) on Aug 21, 2006 at 14:32 UTC
    Nice try, but on the original example this gives:
    void function foo(void) { int i; int j; i = 1; j = 1; i++; j++; }
      Ok, try this. It looks perfect to me on UNIX.
      use Regexp::Common qw/comment/; local $/; $_ = <DATA>; s/(^[ \t]*$RE{comment}{C}\n|$RE{comment}{C})//gm; print; __DATA__ /*This is a bogus function*/ void function foo(void) /*My function is the best*/ { int i; /*i is an integer*/ int j; /*j is also an integer*/ /*Now I'm going to set i to 1*/ i = 1; /*Also j*/ j = 1; /*Here's some incrementing!*/ i++; /*And more!*/ j++; /*The end!*/} __OUTPUT__ void function foo(void) { int i; int j; i = 1; j = 1; i++; j++; }
      Boris
        Congratulations, sir! You are a winner! Works perfectly on my horrible convolutedly commented code!