http://www.perlmonks.org?node_id=67674


in reply to Scanning a plsql package body to make package headers... regexp requested

Close...
#!/usr/bin/perl -w use strict; my $file = shift or die "must supply body file"; open F, $file; my $text = join '', <F>; my $regex = '(procedure|function)\b(.*?)\((.*?)\)'; while ($text =~ /$regex/mgs) { print $1,$2,"($3);",$/; }
The m is important to enable multi-line matching, or your regex will not scan across newlines.
  • Comment on Re: Scanning a plsql package body to make package headers... regexp requested
  • Download Code

Replies are listed 'Best First'.
Re: Re: Scanning a plsql package body to make package headers... regexp requested
by princepawn (Parson) on Mar 28, 2001 at 03:26 UTC
    Actually m made no difference in output. And what I had was working, it's just that the word "function" was in a comment and my regexp was lapping it up, so I will simply filter comments from the text before parsing it:
    #!/arudev/bin/perl use strict; my $file = shift or die "must supply body file"; open F, $file; my @text = <F>; my $text = join '', grep { ! /\s+\-{2,}/ } @text; my $regex = '(procedure|function)\b(.*?)\((.*?)\)'; while ($text =~ /$regex/gs) { print "*$1+$2-$3*",$/; }
    Prince "I knew I was the regexp overlord" Pawn