Nath, Alok (STSD) wrote:
Hi,
I have this program which extract function names from the files.
My only problem is I want to extract only the function names{no
brackets () needed } .
Currently its extract all words after word sub but it all
returns
the parentheses after that.
my $fileLoc = "//opt//sva//perl//lib//" ;
my $funcCount = 0 ;
opendir (DIR, $fileLoc) || die "Cannot opendir $!" ;
my @libs = readdir(DIR) ;
open (RES, ">out.txt") || die "Cannot open out.txt : $!" ;
foreach (@libs){
if(/pm$/){
open(FILE, $fileLoc.$_) or die("Unable to open $!") ;
print RES "Inside file >> $_ \n" ;
while (<FILE>){
chomp ;
if (/sub/){
my $sub ;
my $subName ;
($sub, $subName) = split /\s+/ ;
# print RES $_ ."\n" ;
print RES $subName."\n" ;
$funcCount ++ ;
}
}
print "\n\n" ;
close(FILE) ;
}
}
print RES "Total Functions : $funcCount \n" ;
close RES ;
closedir DIR ;
Hi Alok
If you're going to sell Perl you should program to its strengths. I hope you
find the program below clearer. I wasn't sure whny you doubled the slashes in
the path, but I left them in case there was a good reason. Were you getting
confused about escaping backslashes?
Rob
use strict;
use warnings;
my $fileLoc = "//opt//sva//perl//lib//";
open RES, '>out.txt' or die "Cannot open out.txt: $!";
my $funcCount = 0;
chdir $fileLoc or die $!;
opendir DIR, '.' or die "Cannot open directory: $!";
while (my $file = readdir DIR) {
next unless $file =~ /\.pm$/;
open FILE, $file or die "Unable to open file: $!";
print RES "Inside file >> $file\n" ;
while (<FILE>) {
chomp ;
if (/sub\s+(\w+)/) {
print RES $1, "\n" ;
$funcCount++;
}
}
close FILE;
print RES "\n\n" ;
}
closedir DIR ;
print RES "Total Functions: $funcCount\n" ;
close RES;
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/