- Problem:
- You want to grep an entire C source code tree for comments and dump them to a text file, along with where you found them:
- Solution:
#!/usr/bin/perl ######################################################### # this script will grep out any "C-style" comments # # from a file. C-Style being /* */ or // # # # # usage: comment_grep# # # # to recursively traverse a directory with this: # # find ./ -name '*' -exec comment_grep {} > /tmp/foo \; # # # ######################################################### $infile = shift; $/ = ""; # remove newline from the line delimiter $found = 0; while(<>) { #this pattern will match /* */ comments if( m{ (/\* # match the /* (?:[^*][^/])* # match any number of characters that AREN'T */ \*/) # match the */ }mx # multi-line regex x option to allow comments ) { unless($found) # list what file you found this in # , if you find anything { print "\nfrom $infile:\n"; } print "\n"; # print /* */ and anything in between $found = 1; } # this pattern will match // comments if( m{ (//.*\n) # match // then anything, up to a newline }x # x option to allow comments ) { unless($found) # list what file you found this in, if you # find anything. { print "\nfrom $infile:\n"; } print ""; # print /* */ and anything in between $found = 1; } }