You'll also want to note that other constructs where comment like sequences can appear inside of strings or be commented out themselves. You've assumed all comment sequences begin at the start of the line. You could at least use optional leading whitespace.
Java sequences you didn't consider
String comment_a = "/* this is not a comment */';
String comment_b = "" +
// /*
"this is actually used" +
// */
"";
You'll probably want to go to java.sun.com for the actual grammar used for parsing Java. That is ... unless someone else has written a grammar already. The reference is at http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html and it doesn't look *too* involved...
This is a slightly cleaned up version of what you originally posted with some fixes for legibility.
if ( length $line )
{
if ($line =~ m|^\s* // |x or
$line =~ m|^\s* /\* |x or
$line =~ m|^\s* \* |x)
{
$comment = $comment + 1;
}
else
{
print "$line\n";
$code = $code + 1;
}
}
|