Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Re: Regex Strikes again!

by nofernandes (Beadle)
on Jul 16, 2003 at 14:53 UTC ( [id://274849]=note: print w/replies, xml ) Need Help??


in reply to Re: Regex Strikes again!
in thread Regex Strikes again!

Your code is very good.. thank you.. and if i had it a few weaks earlier it migtht have been a very good option for my program

But the other regex works just fine and catches all the cases! And is simply "changable" in order to serve to other languages as PLSQL, ProC, etc..

The only problem that i have is how to catch the number of lines!!

Iīve made some code in order to compare two files and it works "almost"* fine but in larger files it might be a bit slow!!

I said that almost works fine because it "flips over" when he finds lines like this /*********************/ !!! And i donīt have any idea why!!!

Maybe you can help me out to figurate out what is the problem!!!

foreach my $line (@fich){ $i++; $flag=0; foreach $comm (@com){ if( (($line eq $comm) || (index($line, $comm) > -1)) && ($flag +==0)){ print"Linha $i: $comm"; $flag=1; print "Flag1: $flag\n"; } } }

The two arrays contain two files!!The @com contains the file with the extracted comments and the @fich contains the content of the source code!!

Thank you very much!!

Nuno

Replies are listed 'Best First'.
Re: Re: Re: Regex Strikes again!
by johndageek (Hermit) on Jul 16, 2003 at 19:42 UTC
    This will give you the correct line number count. counting the newlines in the matched set isn't what you want, unless I misunderstood your code. - slurped file into variable $f and changed reference of $slurpedfile to the original input file.

    hth
    John

    #!/usr/bin/perl $file="theinputfile"; undef $/; #In order to read the whole file at once open(F,"$file"); $f = <F>; my @matches = $f =~ m{ ( /\* .*? \*/) | ( \/\/[^\n]*) | " (?: [^"\\]* | \\. )* " | ' (?: [^'\\]* | \\. )* ' | . [^/"']* }xgs; @matches = grep {defined $_} @matches; #get rid of undefs my $linenum = 1; foreach my $match (@matches) { # $slurpedfile =~ /\Q$match/; $f =~ /\Q$match/; my $before = $`; # $slurpedfile = $'; $f = $'; my $matched = $&; $linenum += $before =~ tr/\n/\n/; print "Line $linenum\t$match\n"; $linenum += $match =~ tr/\n/\n/; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://274849]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2024-04-19 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found