| 
%cat cfilter.pl 
#!/usr/bin/perl 
require "cfilter.pm"; 
 
#==============================================================================# 
package main; 
#==============================================================================# 
my $vwords = CFILTER::new(); 
open(IN,"$ARGV[0]"); 
my $aline; while($aline=<IN>) { 
        my @os = CFILTER::cfilter($vwords,$aline); 
        if(@os) { print join("|",@os)."|";} 
} 
close(IN); 
 
%cat cfilter.pm 
#!/bin/perl 
 
#==============================================================================# 
package CFILTER; 
#==============================================================================# 
#------------------------------------------------------------------------------# 
sub new { 
#------------------------------------------------------------------------------# 
        my ($class, @data) = @_; 
        my $ref = {}; 
        bless $ref, $class; 
        CFILTER::init($ref,@data); 
        return $ref; 
} 
 
#------------------------------------------------------------------------------# 
sub init { 
#------------------------------------------------------------------------------# 
        my ($ref,@data) = @_; 
         
        %$ref = (%$ref, 
                "comment", "", 
                "nline",   ""); 
        if(@data) { %$ref = (%$ref, @data);}; 
} 
 
#------------------------------------------------------------------------------# 
sub cfilter { 
#------------------------------------------------------------------------------# 
        my ($ref, @lines) = @_; 
        my @olines = (); 
        my $i; for($i=0;$i<=$#lines;$i++) { 
                my @as = split('',$lines[$i]); 
                my $j; for($j=0;$j<=$#as;$j++) { 
                        if($as[$j] eq '\\') { 
                                $$ref{'nline'} .= $as[$j].$as[$j +1]; 
                                $j++; 
                        } 
                        elsif($$ref{'comment'} eq '"') { 
                                $$ref{'nline'} .= $as[$j]; 
                                if($as[$j] eq '"') { 
                                        $$ref{'comment'} = ""; 
                                } 
                        } 
                        elsif(($$ref{'comment'} eq "\n")&&($as[$j] eq "\n")) { 
                                $$ref{'nline'} .= $as[$j]; 
                                $$ref{'comment'} = ""; 
                        } 
                        elsif(($$ref{'comment'} eq "*/") 
                            &&($as[$j] eq '*')&&($as[$j +1] eq '/')) { 
                                $j++; 
                                $$ref{'comment'} = ""; 
                        } 
                        elsif($$ref{'comment'}) { 
                        } 
                        elsif($as[$j] eq "\"") { 
                                $$ref{'nline'} .= $as[$j]; 
                                $$ref{'comment'} = "\""; 
                        } 
                        elsif(($as[$j] eq '/')&&($as[$j +1] eq '*')) { 
                                $j++; 
                                $$ref{'comment'}="*/"; 
                        } 
                        elsif(($as[$j] eq '/')&&($as[$j +1] eq '/')) { 
                                $j++; 
                                $$ref{'comment'}="\n"; 
                        } 
                        else { 
                                $$ref{'nline'} .= $as[$j]; 
                        } 
                } 
                if($$ref{'nline'}) { 
                        push(@olines,$$ref{'nline'}); 
                        $$ref{'nline'} = ""; 
                } 
        } 
        @olines; 
} 
 
1;  | 
 |