#!/usr/local/bin/perl # # search for a file in all subdirectories # #if ($#ARGV != 0) { # print "usage: findfile filename\n"; # exit; #} $file_ext = '.cc'; # look in current directory #$dir = "/cavs/hse/ies/d002/isip/users/srinivas/tools/class/"; $dir = "/cavs/hse/ies/d002/isip/users/srinivas/research/Assignments/NLP1/Energy/"; chop($dir); &searchDirectory($dir); sub searchDirectory { local($dir); local(@lines_in_ls); local($line_in_ls); # local(@lines_in_file); # local($line_in_file); local($line_in_file2); local($i); local($j); local($file_length); local($num_curly); local($file); local($full_file_name); local($subdir); $dir = $_[0]; # check for permission if(-x $dir) { # search this directory @lines_in_ls = `cd $dir; ls -l`; foreach $line_in_ls (@lines_in_ls) { $line_in_ls =~ /\s+(\S+)$/; $file = $1; if ($file =~ /$file_ext$/) { $full_file_name = $dir."/".$file; open(INFO, $full_file_name); # Open the file @lines_in_file = ; # Read it into an array $file_length = $#lines_in_file; for ($i=0; $i < $file_length; ++$i) { $line_in_file = $lines_in_file[$i]; $num_curly = 1; $sum_not_detected = 1; if (line_is_a_float_function($i)) { $j=$i; do { if (++$i < $file_length) { $line_in_file2 = $lines_in_file[$i]; if ($sum_not_detected) { if ($line_in_file2 =~ /[^a-zA-Z0-9]sum\s*[^\(]/) { print "$line_in_file\n"; $sum_not_detected = 0; } } if ($line_in_file2 =~ /\{/) { ++$num_curly; } elsif ($line_in_file2 =~ /\}/) { --$num_curly; } } }while ($num_curly); } } close(INFO); } } } # search any sub directories @lines_in_ls = `cd $dir; ls -l`; foreach $line_in_ls (@lines_in_ls) { if($line_in_ls =~ /^d/) { $line_in_ls =~ /\s+(\S+)$/; $subdir = $dir."/".$1; &searchDirectory($subdir); } } } sub line_is_a_float_function { local($line_in_file); local($argument); @lines_in_file = @_[0]; $line_in_file = lines_in_file[]; if ($line_in_file =~ /^(\S+\s+)+\S+\((.*)\)\s\{/) { $argument = $2; if ($argument =~ /F|float/) { return 1; } else { return 0; } } else { return 0; } }